私はこれらの2つの主要なクラスを持っています。まずFSMSystemクラス:タイプ 'T'はジェネリックタイプまたはメソッドでパラメータ 'T'として使用するために変換可能でなければなりません
public class FSMSystem<T> : MonoBehaviour where T : FSMSystem<T>
{
private T m_Owner = default(T);
protected FSMState<T> currentState;
private Dictionary<int, FSMState<T>> m_states;
public FSMSystem(T owner)
{
m_Owner = GameObject.FindObjectOfType(typeof(T)) as T; //owner;
m_states = new Dictionary<int, FSMState<T>>();
}
protected void AddState(FSMState<T> state)
{
m_states.Add(state.GetStateID(), state);
}
}
そして第二のクラス、FSMState:
public abstract class FSMState<T>
{
public abstract int GetStateID();
public abstract void OnEnter (FSMSystem<T> fsm, FSMState<T> prevState);
public abstract void OnUpdate (FSMSystem<T> fsm);
public abstract void OnExit (FSMSystem<T> fsm, FSMState<T> nextState);
}
それは次のエラーにつながる:
error CS0309: The type '
T
' must be convertible to 'FSMSystem<T>
' in order to use it as parameter 'T
' in the generic type or method 'FSMSystem<T>
'
誰かがこれを解決する方法を教えてもらえますか?私はこのような他の多くの記事を参照してくださいが、私は関係を見ていないよ。
このコードはこのエラーを引き起こしますか? –
+1私はdownvotesを理解していないため。 – Medo42
+1 Medo42と同じ理由で。 – user707727