[英]Adding to virtual function in derived class
我有一個繼承自piece
pawn
類:piece具有一個聲明為moveTo
的函數,如下所示:
public virtual void moveTo(Coord newLoc)
{
Coord origLoc = location;
Transform transform = gameObject.GetComponent<Transform>();
Coord transCoord = newLoc - location;
if (LogicMaster.currentBoard[newLoc].piece != null) {
if (LogicMaster.currentBoard[transCoord].piece.targeted) {
UnityEngine.Object.Destroy(LogicMaster.currentBoard[transCoord].actor);
LogicMaster.currentBoard[transCoord].actor = null;
}
}
if (LogicMaster.currentBoard[newLoc].actor == null)
{
Vector3 transVector = new Vector3();
transVector.x = transform.position.x + transCoord.x * Constants.oneRight.x;
transVector.z = transform.position.z + transCoord.y * Constants.oneForward.y;
transVector.y = transform.position.y;
transform.position = transVector;
LogicMaster.currentBoard[newLoc].actor = gameObject;
LogicMaster.currentBoard[newLoc].piece = this;
LogicMaster.currentBoard[newLoc].piece.location = newLoc;
LogicMaster.currentBoard[this].actor = null;
LogicMaster.currentBoard[this].piece = null;
LogicMaster.selectedPiece = null;
LogicMaster.pieceSelected = false;
LogicMaster.currentBoard.resetColours();
LogicMaster.currentBoard.hideMarkers();
LogicMaster.whiteTurn = !LogicMaster.whiteTurn;
}
}
是否有可能在pawn
類內實現重寫,該類實現moveTo
內的代碼,然后將其添加到末尾? 否則,我認為這只是復制和粘貼作業。
謝謝。
如CodeCaster所述,您可以重寫該方法並調用base.MoveTo(..),然后添加您自己的邏輯。
例
基類:
public class CodeFirstInstallationService : IInstallationService
{
public virtual void InstallData(string defaultUserEmail,
string defaultUserPassword, bool installSampleData = true)
{
// Doing basic logic
}
}
從基礎派生的類:
public class MyInstallationService : CodeFirstInstallationService
{
public override void InstallData(string defaultUserEmail,
string defaultUserPassword, bool installSampleData = true)
{
// Let the base class do it´s install logic
base.InstallData(defaultUserEmail, defaultUserPassword, installSampleData);
// Do my own logic
// Install flux capacitor etc
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.