特にUnityエンジンが行うことに気付いたc#で何かを行う方法を理解しようとしています。なんらかの実装またはサブクラス化のように見えますが、ソースがないためわかりません。
Unity では、すべてのスクリプトは次のようになります。
class someclass : MonoBehavior
{
}
これで、この MonoBehavior を介してエンジンが次のようなクラスで呼び出す、使用できる関数のリストがあります。
void OnGUI()
{
so something here
}
したがって、OnGUI 関数をすべて含む 5 つのスクリプトがある場合、5 つのスクリプトすべてで呼び出されます。
この種のものを自分で実装したいのですが、これを理解できません。
基本クラスまたは実装、またはサブクラスで事前定義された関数を呼び出すが、関数のサブクラスを必要とせず、それらでオーバーライドを使用する必要がないものをどのように作成しますか?
Unity Engine のソース ファイルの例を次に示します。
public class EnemyAttack : MonoBehaviour {
// Use this for initialization
void Start () {
AttackTimer = 0;
CoolDown = 2.0f;
}
// Update is called once per frame
void Update () {
if (AttackTimer > 0) AttackTimer -= Time.deltaTime;
if (AttackTimer < 0) AttackTimer = 0;
if (AttackTimer == 0){
Attack();
AttackTimer = CoolDown;
}
}
}
そのコードは完全に機能し、最初の起動時にエンジン呼び出しが開始され(単一の呼び出し)、Update every frameを呼び出しますそのコードのどこにもオーバーライドが絶対にないことに注意してください
ある種のイベント システムのようですが、Google でこれを行う方法を説明しているものは見つかりません。