0
WolfStateController.Start()でStateから継承したState TrueStateをWolfIdleStateに設定しようとしています。拡張クラスでは拡張クラスの型を受け入れません
しかし、WolfStateControllerはStateControllerを拡張しています。まだそれは受け入れられません。エラーメッセージを記述したStartメソッドを見てください。これは可能なのでしょうか?多形に関する何かが欠落しているか、構文が間違っています。
// STATECONTROLLER
public class StateController : MonoBehaviour
{
public State<StateController> CurrentState;
}
public class WolfStateController : StateController
{
void Start()
{
var idleState = new WolfIdleState();
var keyPressDecision = new KeyPressedDecision(KeyCode.Space);
// FOLLOWING GIVES ERROR:
// Cannot implicity convert WolfIdleState to State<StateController>
keyPressDecision.TrueState = idleState;
}
}
// STATE
public abstract class State<SC> where SC : StateController
{
}
public abstract class WolfState : State<WolfStateController>
{
}
public class WolfIdleState : WolfState
{
}
// DECISIONS
public abstract class StateDecision<SC> where SC : StateController
{
public State<SC> TrueState;
}
public class KeyPressedDecision : StateDecision<StateController>
{
}
'State'は 'State 'と同じではありません –
DavidG
これは正しいです。だから、多態性はStateControllerを拡張するので、私はwolfStateControllerを使うことができると思いました。いいえ?多形性のポイントは何ですか? – Lautaro