Unityでクラスの継承を利用する場合、単にvoid Start()
やvoid Update()
と書くと継承元の実装は呼び出されない形になります。
サンプル1
public class Example1 : MonoBehaviour
{
void Start()
{
Debug.Log("Start1");
}
void Update()
{
Debug.Log("Update1");
}
}
public class Example2 : Example1
{
void Start()
{
Debug.Log("Start2");
}
void Update()
{
Debug.Log("Update2");
}
}
Example2
の実行結果
Start2 Update2 Update2 Update2 ...
このExample2
から継承元Example1
のStart
やUpdate
を呼び出したい場合はvirtual protected
とoverride protected
を使って次のような感じで実装できるみたいです。
サンプル2
public class Example1 : MonoBehaviour
{
virtual protected void Start()
{
Debug.Log("Start1");
}
virtual protected void Update()
{
Debug.Log("Update1");
}
}
public class Example2 : Example1
{
override protected void Start()
{
base.Start();
Debug.Log("Start2");
}
override protected void Update()
{
base.Update();
Debug.Log("Update2");
}
}
Example2
の実行結果
Start1 Start2 Update1 Update2 Update1 Update2 Update1 Update2 ...
base.
を使った継承元メソッドの呼び出しはStart
やUpdate
以外でも使えます。必要な場所で試してみてください。