当我没有在代码中调用它时,为什么Unity会调用我的方法?

时间:2014-11-21 12:02:38

标签: c# class unity3d structure

我无法理解为什么方法OnDrawGizmos()Start()方法和Update()方法中都没有被调用时执行,但它在我运行Unity项目时执行。< / p>

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour 
{
    public Transform grounder;


    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void OnDrawGizmos(){
        Gizmos.color = Color.white;
        Gizmos.DrawSphere (grounder.position, 1);
    }
}

2 个答案:

答案 0 :(得分:3)

顾名思义,OnDrawGizmozs由统一引擎调用。它是一个在实现MonoBehaviour的类上调用的消息函数。文档中的例外情况:

  

描述

     

如果你想绘制同样的小玩意,可以实现OnDrawGizmos   可选择的,总是被画出来的。

http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDrawGizmos.html

这意味着您不需要自己调用此功能。

答案 1 :(得分:2)

因为Unity在实现MonoBehaviour的类上调用它,根据documentation