zoukankan      html  css  js  c++  java
  • Unity3D脚本中文系列教程(十)

    http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii

    Unity3D脚本中文系列教程(九)

    类,继承自Behaviour。

    用于light components的脚本接口。使用这个来控制Unity光源的所有方面。这个属性完全与现实在监视面板中的值相同。通常光源都是在编辑器中创建,但是有时候需要从脚本中创建。
    function Start ()

    {
        //制作一个游戏物体
        var lightGameObject = new GameObject ("The Light");
        //添加光源组件
        lightGameObject.AddComponent (Light);
        //设置颜色和位置
        lightGameObject.light.color = Color.blue;
        //在添加光照组件后,设置位置(或任何变换组件)
        lightGameObject.transform.position = Vector3 (0, 5, 0);
    }


    变量


    ◆ var attenuate : bool


    描述:光源是否随着距离衰减?对于Directional光源衰减总是关闭的。
    //关闭光源衰减。
    light.attenuate = false;
    参见:Light component


    ◆ var color : Color


    描述:光源的颜色。为了修改光源的强度你需要改变光源颜色的亮度。光源总是增加亮度,因此一个黑色的光源与没有光源相同。光源是否随着距离衰减?对于Directional光源衰减总是关闭的。
    //在2秒内使颜色变黑。
    function Update ()

    {
        light.color -= Color.white / 2.0 * Time.deltaTime;
    }
    //在2个颜色之间来回插值光源颜色。
    var duration = 1.0;
    var color0 = Color.red;
    var color1 = Color.blue;
    function Update ()

    {
        //设置光源颜色
        var t = Mathf.PingPong (Time.time, duration) / duration;
        light.color = Color.Lerp (color0, color1, t);
    }
    参见:Light component。


    ◆ var cookie : Texture


    描述:被盖光源投影的cookie纹理。如果cookie是一个立方体贴图,光源将变为一个点光源。注意cookie只在像素光源下显示。
    //在监视面板中公开一个纹理的引用
    var newCookie : Texture2D;
    //赋cookie
    light.cookie = newCookie;
    参见:Light component


    ◆ var cullingMask : int


    描述:这个用来选择性的照亮部分场景。如果GameObject的layerMask与光源的cullingMask进行AND操作后为0.,那么这个游戏物体不能被这个光源照亮。参考Layers获取更多信息。
    //只照亮第一层中的物体(默认层)
    light.cullingMask = 1 << 0;
    参见:Light component


    ◆ var flare : Flare


    描述:为这个光源使用的flare asset。
    //在监视面板中公开一个闪光的引用
    var newFlare : Flare;
    //赋值闪光
    light.flare = newFlare;
    参见:Light component和flare asset。


    ◆ var intensity : float


    描述:光源的强度被光源的颜色乘。该值可以介于0~8之间。允许你创建明亮的灯光。
    //随时间改变光照强度
    var duration = 1.0;
    function Update()

    {
        //余弦理论
        var phi = Time.time / duration * 2 * Mathf.PI;
        //获取余弦,并将范围从-1~1变为0~1
        var amplitude = Mathf.Cos( phi ) * 0.5 + 0.5;
        //设置光的颜色
        light.intensity = amplitude;
    }


    ◆ var range : float


    描述:光源的范围。
    即使光源关闭了attenuate,它还是只影响在它范围内的物体。
    //在原始范围与原始范围一般处变换光照范围
    var duration = 3.0;
    private var originalRange : float;
    originalRange = light.range;
    function Update()

    {
         var amplitude = Mathf.PingPong( Time.time, duration );
         //将0..持续时间改为0.5..1范围
         amplitude = amplitude / duration * 0.5 + 0.5;
         //设置光照范围
         light.range = originalRange * amplitude;
    }
    参见:Light component。


    ◆ var renderMode : LightRenderMode


    描述:如何渲染该光源?此处可以是LightRenderMode.Auto, LightRenderMode.ForceVertex 或 LightRenderMode.ForcePixel。像素光渲染比较慢但是看起来较好,尤其是对那些没有较高面数的几何体。一些效果(例如凹凸)只会在像素光照下显示。
    //使光源只以点光照模式渲染
    light.renderMode = LightRenderMode.ForceVertex;
    参见:Light component


    ◆ var shadowConstantBias : float


    描述:阴影偏移常量。
    参见:shadows,shadowObjectSizeBias。


    ◆ var shadowSizeBias : float


    描述:阴影偏移常量。
    参见:shadows,shadowConstantBias。


    ◆ var shadows : LightShadows


    描述:这个光源是否投射阴影?
    //设置光源为投射硬阴影
    light.shadows = LightShadows.Hard;
    参见:LightShadows, shadowStrength property, Renderer.castShadows, Renderer.receiveShadows


    ◆ var shadowStrength : float


    描述:光源阴影的强度?
    //使光源的阴影非常弱
    light.shadowStrength = 0.3;
    参见:shadows property, Renderer.castShadows, Renderer.receiveShadows。


    ◆ var spotAngle : float
    描述:光源的投射光角度。主要用于Spot光源。改变Directional光源的cookie尺寸。对Point光源没有影响。
    //在”minAngle”与”maxAngle”之间随机改变投射角度
    //每’interval’秒改变一次.
    var interval=0.3;
    var minAngle=10;
    var maxAngle=90;
    private var timeLeft:float;
    timeleft=interval;
    light.type=LightType.Spot;
    function Update()
    {
         timeLeft=Time.deltaTime;
         if(timeLeft<0.0)

         {
           //开始改变
           timeLeft-=interval;
           light.spotAngle=Random Range(minAngle,maxAngle);
         }
    }
    参见:Light component


    ◆ var type:LightType


    描述:光源的类型
    可以是LightType.Spot,LightType.Directional,LightType.Point.
    //制作一个投射光源
    Light.type=LightType.Spot;
    参见:Light component


    继承的成员
    继承的变量
    Enabled 启用Behaviours被更新,禁用Behaviours不被更新。
    Transform附加到这个GameObject的Transform(如果没有为null)。
    Rigidbody附加到这个GameObject的Rigidbody(如果没有为null)。
    Camera 附加到这个GameObject的Camera(如果没有为null)。
    Light  附加到这个GameObject的Light(如果没有为null)。
    Animation附加到这个GameObject的Animation(如果没有为null)。
    constantForce附加到这个GameObject的ConstantForce(如果没有为null)。
    Renderer 附加到这个GameObject的Renderer(如果没有为null)。
    guiText 附加到这个GameObject的GUIText(如果没有为null)。
    networkView附加到这个GameObject的NetworkView(如果没有为null)。
    Collider 附加到这个GameObject的Collider(如果没有为null)。
    hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有为null)。
    gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
    Tag  这个游戏的标签。
    Name 对象的名称。
    hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?

    继承的函数


    GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
                          回null。
    GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
    GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
    GetComponets返回Gameobject所有type类型的组件。
    CompareTag 这游戏物体被标签为tag?
    SendMessageUpwards  在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
    SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
    methodName方法。
    BoradcastMessage  在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
    GetInstanceID            返回该物体的实例id。


    继承的类函数


    Operator bool 这个物体存在吗?
    Instatiate  克隆original物体并返回这个克隆。
    Destroy  移除一个游戏物体,组件或资源。
    DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
    FindObjectsOfType返回所有类型为type的激活物体。
    FindObjectOfType返回第一个类型为type的激活物体。
    Operator== 比较两个物体是否相同。
    Operator!= 比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。


    MonoBehaviour 类,继承自Behaviour
    MonoBehaviour是每个脚本所继承的基类。
    每个使用Javascript的脚本自动地从MonoBehaviour继承。当使用C#或Boo时你必须显式从MonoBehaviour继承。
    参见:手册中的chapter on scripting.


    函数


    ◆function Cancellnvoke():void


    描述:取消所有在这个MonoBehaviour上调用
    //在2秒时开始
    //一个projectile所在每0.3秒时运行
    var projectile:Rigidbody;
    InvokeRepeating(“LaunchProjectile”,2,0.3);
    //当用户按下ctrl按钮时,
    //取消重复调用
    function Update()
    {
      If(Input.GetButton(“Fire1”))

      {
        Cancellnvoke(); 
      }
    }
    function LaunchProjectile()

    {
       Instance=Instantiate(projectile);
       Instance.velocity=Random.insideUnitSphere*5;
    }

    ////////////////////////////////////////

    这里我整理了一下看起来方便:

    var projectile:Rigidbody;
    InvokeRepeating("LaunchProjectile",2,0.3);

    function Update()
    {
        if(Input.GetButton("Fire1"))
        {
            CancelInvoke();
        }
    }
    function LaunchProjectile()
    {
        var Instance:Rigidbody=Instantiate(projectile);
        Instance.velocity=Random.insideUnitSphere*5;
    }

    /////////////////////////////////////////////


    ◆function Cancellvoke(methodName:string):void


    描述:撤销该行为中名为methodName的所有调用。
    //在2秒时开始
    //一个projectile将在每0.3秒时运行
    var projectile :Rigidbady;
    invokeRepeating(“LaunchProjectile”,2,0.3);
    //当用户按下crtl按钮时
    //取消重复调用
    function Update()

    {
        If(Input.GetButton(Fire1)){
        Cancellnvode(“LaunchProjectile”);
     }
    }
    function LanuchProjectile()

    {
        instance=Instntiate(prefab);
        instance.velocity=Random.insideUnitSphere*5;
    }


    ◆function Invoke(methodName:string,time:float):void


    描述:在time秒调用methodName方法。
    //在两秒时发射一个投射物
    var  Projectile:rigidbady;
    Invoke(“LaunchProjectile”,2);
    function LaunchProjectile()

    {
        Instance=Instantiate(prefab);
        Instance.velocity=Random.insideUnitSphere*5;
    }


    ◆function InvokeRepeating(methodName:string,time:float,repeatRate:float):void


    描述:在time秒调用methodName方法。
    第一次调用之后,每repeatRate秒重复调用这个函数
    //在2秒时开始
    //一个Projectile将在每0.3秒运行
    var projectile:Rigidbody;
    InvokeRepeating(“LaunchProjectile”,2,0.3);
    function LaunchProjectile()

    {
        instance=Instantiate(prefab);
        instance.velocity=Random.insideUnitSphere*5;
    }


    ◆function IsInvoking(methodName:string)


    描述:是否有任何MonoBehaviour的调用在等待?


    ◆function StartCoroutine(routine:IEnumerator):Coroutine


    描述:开始一个coroutine
    一个coroutine的执行可以任何位置使用yield语句暂停,当coroutine继续的时候yield返回值,当行为需要跨越多个帧的时候,Coroutines是非常好的,当Coroutines几乎没有性能负担。StartCoroutine函数总是立即返回,然而你能够yidle结果,这个将等待直到coroutine执行完成。
    当使用javascript时,没有必要使用StartCorutine,编译器会为你做这件事。在写C#代码的时候你必须调用StartCoroutine
    //在这个例子中我们显示如何并行调用
    //一个coroutine并继续执行这个函数。
    //0秒后,打印”Starting0.0”
    //0秒后,打印”Before WaitAndPrint Finishes0.0”
    //2秒后,打印”WaitAndPrint 2.0”
    print(“Starting”+Time.time);
    //WaitAndPrint作为一个coroutine开始,并等待直到它完成
    WaitAndPrint(2.0)
    print(“Before WaitAndPrint Finishes”+Time.time);
    function WaitAndPrint(waitTime:float)

    {
        //暂停执行waitTime秒
        Yield WaitForSeconds(waitTime);
        Print(“WaitAndPrint”+Time.time);
        //WaitAndPrint作为一个coroutine开始,并等待直到它完成
        yield WaitAndPrint(2.0);
        print(“Done”+Time.time);
    }


    C#例子代码如下
    //C#例子,在这个例子中我们显示如何并行调用
    //一个coroutine并继续执行这个函数
    void Start(){
    //0秒后,打印”Starting0.0”
    //0秒后,打印”Before WaitAndPrint Finishes0.0”
    //2秒后,print”waitAndPrint2.0”
    print(“Starting”+Time.time);
    StartCoroutine(WaitAndPrint(2.0F));
    print(“Before WaitAndPrint Finishes”+Time.time);
    }
    IEnumerator WaitAndPrint(float waitTime){
    // 暂停waitTime秒
    yield return new WaitForSeconds(waitTime);
    print(“WaitAndPrint”+Time);
    }
    //c#例子
    //在这个例子中我们展示如何调用一个coroutine并等待直到它完成
    IEnumerator Start(){
    //0秒后,打印”strating0.0”
    //2秒后,prints”WaitAndPrint2.0”
    //2秒后,打印”Done 2.0”
    print(“Starting”+Time.time);
    yield return StartCoutine(WaitAndPrint(2.0f);
    print(“Done”+Time.time);
    }
    IEnumerator WaitAndPrint(float waitTime){
    //暂停waitTime秒
     yield return new WaitForSeconds(waitTime);
    print(“WaitAndPrint”+Time.time);
    }


    ◆function StartCoroutine(methodName: string, value: object=null): Coroutine


    描述:开始为methodName的Coroutine。
    在大多数情况下,你要用StartCoroutine的变体。然而,使用一个字符串方法名的StartCoroutine允许StopCoroutine使用一个特定的方法名称。字符串级本的特定时它有较高的运行时开销来开始coroutine,并且你只能传递一个参数。
    //在则合格例子中我们现实如何一个字符串名调用一个coroutine并停止它
    function Start()

    {
        StartCoroutine(“DoSomething”,2.0);
        yield WaitForSeconds(1);
        StopCoroutine(”DoSomething”);
    }
    function DoSomething(someParameter: float)

    {
        While(true)
        {
            print(”DoSomething Loop”);
            yield
         }
    }

    //////////////////////////////////////////////

    // In this example we show how to invoke a coroutine using a string name and stop it
    function Start ()

    {
        StartCoroutine("DoSomething", 2.0);
        yield WaitForSeconds(1);
        StopCoroutine("DoSomething");
    }
    function DoSomething (someParameter : float)

    {
        while (true)

        {
            print("DoSomething Loop");
            // Yield execution of this coroutine and return to the main loop until next frame
            yield;
        }
    }

    ////////////////////////////////////////////////////


    ◆Function StopAllCoroutines(): void
    描述:停止所有运行在这个行为上的Coroutine。
    //开始coroutine
    StartCoroutine(“DoSomething”);
    //紧跟着取消coroutine
    function DoSomething()

    {
        While(true)

        {
           yield;
        }
    }
    StopAllCoroutines();


    ◆Function StopCoroutine(methodName: string): void


    描述:停止所有运行在这个行为上的名为methodName的Coroutine。
    请注意只使用一个字符串方法名的StartCoroutine才能使用StopCoroutine停止。
    //在这个例子中我们显示如何使用一个字符串名调用一个coroutine并停止它
    function Start()

    {
         StartCoroutine(“DoSomething”,2.0);
         yield WaitForSeconds(1);
         StopCoroutine(”DoSomething”);
    }
    Function DoSomething(someParameter: float)

    {
        while(true)
        {
           print(”DoSomething Loop”);
           Yield
         }
    }

    /////////////////////////////////////////

    // In this example we show how to invoke a coroutine using a string name and stop it
    function Start () {
    StartCoroutine("DoSomething", 2.0);
    yield WaitForSeconds(1);
    StopCoroutine("DoSomething");
    }
    function DoSomething (someParameter : float) {
    while (true) {
    print("DoSomething Loop");
    // Yield execution of this coroutine and return to the main loop until next frame
    yield;
    }
    }

    ////////////////////////////////////////////////////////


    重载函数


    ◆function Awake(): void


    描述:当脚本实例被加载时,Awake 被调用。
    在游戏开始前,使用Awake 来初始化任何变量或游戏状态。在脚本实例的生命期内Awake 只被调用一次。Awake 在所有物体被初始化之后被调用,因此你可以安全地告诉其他物体或使用如GameObject.FindWithTag来查询它们。每个游戏物体的Awake 以随机的顺序被调用。因此,你应该使用Awake 来再脚本之间设置引用,并使用Start来传递消息。Awake 总是在任何Start函数之前调用。这允许你调整脚本的初始化顺序。Awake 不能作为一个Coroutine
    注意对于C#和Boo用户:使用Awake 而不是构造函数来初始化,因为组件的序列化状态在构造的时候还没有确定。Awake 只被调用一次,就像构造函数。
    private var target: GameObject;
    function Awake()

    {
        target=GameObject.FindWithTag(‘”Player”);
    }
    Awake不能作为一个coroutine。


    ◆function FixedUpdate (): void
    描述:如果MonoBehaviour被启用,这个函数将以固定的帧率调用。
    当处理Rigidbody是应该使用FixedUpdate而不是使用Update。例如,当添加一个力到刚体时,你必须在FixedUpdate内以固定的帧率应用而不是在Update内。
    //应用一个向上的力到刚体
    function FixedUpdate()

    {
        Rigidbody.AddForce(Vector3.up);
    }
    力伟到从上一次调用Update的消逝时间,使用Time.deltaTime,这个函数只在Behaviour被启用时调用。重载这个函数,以便给你的组件提供功能。


    ◆function LateUpdate (): void


    描述:如果该Behaviour被启用,LateUpdate将在每帧中调用。
    LateUpdate在所有Update函数被调用后调用。这可用于调整脚本执行顺序。例如,一个跟随相机应该总是在LateUpdate中实现,因为他跟踪Update中移动的物体。
    //向前以1米/秒的速度移动物体
    function LateUpdate ()

    {
        transfor.Translate(0,0,Time.deltaTime*1);
    }
    为了得到从最后一个调用LateUpdate的消逝时间,使用Time.deltaTime。如果该Behaviour被启用,该函数将在每帧中调用。重载这个函数,以便给你的组件提供功能。


    ◆function OnApplicationPause(pause: bool): void


    描述:当玩家暂停时发送到所有游戏物体。
    OnApplicationPause可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnApplicationQuit(): void


    描述:在应用退出之前发送到所有游戏物体。
    在编辑器中当用户停止播放模式时这个被调用。在网页播放器中当web被关闭时这个函数被调用。


    ◆function OnBecameInvisible(): void


    描述:OnBecameInvisible函数在这个渲染上的脚本。OnBecameVisible和OnBecameInvisible可以用于只需要在需要在物体可见时才进行的计算。
    //当它不可见时禁用这个行为
    function OnBecameInvisible()

    {
        enabled=false;
    }
    OnBecameInvisible可以是一个coroutine,简单地在这个函数中使用yield语句。当在编辑器中运行时,场景试图相机也会导致这个函数被调用。


    ◆function OnBecameVisible(): void
    描述:OnBecameVisible函数在这个渲染器对任何相机变得可见时被调用。
    这个消息被发送到所有附加在渲染器上的脚本。OnBecameVisible和OnBecameInvisible可以用于只需要在需要在物体可见时才进行的计算。
    //当它不可见时禁用这个行为
    function OnBecameVisible()

    {
        enabled=false;
    }
    OnBecameVisible可以是一个coroutine,简单地在这个函数中使用yield语句。当在编辑器中运行时,场景视图相机也会导致这个函数被调用。


    ◆function OnCollisionEnter(collisionInfo: Collision): void


    描述:
    当这个碰撞器/刚体开始接触另一个刚体/碰撞器时OnCollisionEnter被调用。
    相对于OnTriggerEnter,OnCollosionEnter传递Collision类而不是Collider,Collision类包含接触点,碰撞速度等细细。如果在函数中不使用CollisionInfo,省略CollisionInfo参数以避免不西药的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
    function OnCollisionEnter(collision: Collision)

    {
        //调试绘制所有的接触点和法线
        for(var contact: ContactPoint in collision.contacts)

        {
            Debug.DrawRay(contact.point, contact.normal, Color.white);
        }
        //如果碰撞物体有较大的冲击就播放声音
        if(collision.relativeVelocity.magnitude>2)
           audio.Play();
    }
    OnCollisionEnter可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnCollisionExit(collisionInfo: Collision): void


    描述:当这个碰撞器/刚体开始接触另一个刚体/碰撞器时OnCollisionEnter被调用。
    相对于OnTriggerExit,OnCollosionExit传递Collision类而不是Collider. Collision类包含接触点,碰撞速度等细节。如果在函数中不使用CollisionInfo,省略CollisionInfo参数以避免不必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
    function OnCollisionExit(collision: Collision)

    {
         print(“No longer in contact with”+collisionInfo.transform.name);
    }


    OnCollisionExit可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnCollisionStay(collisionInfo:collision):void


    描述:对于每个与刚体碰撞器相触碰的碰撞器刚体,OnCollisionStay将在每一帧中被调用。
    相对于OnTriggerStay,OnCollisionStay 传递Collision类而不是Collider.Collision类包含接触点,碰撞速度等细节。如果在函数中不使用collisionInfo省略collisionInfo参数以避免不要必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
    function OnCollisionStay(CollisionInfo:Collision){
     //调试绘制所有的接触点和法线
     for (var contact:ContactPoint in collision.contacts){
      Debug.DrawRay(contact.point,contact.normal,Color.white);
     }
    }
    OnCollisionStay可以是一个coroutine,也简单地在这个函数中使用yield语句


    ◆function OnConnectedToServer():void


    描述:当成功链接到服务器时在客户端调用这个函数。
    function OnConnectedToServer()

    {
       Debug.Log(“Connected to server”);
       //发送到本地玩家名称到服务器
    }


    ◆function OnControllerColliderHit(Hit:controllerColliderHit):void


    描述:在移动的时候,控制器碰到一个碰撞器时,OnControllerColliderHit被调用。
    这可以用来在角色碰到物体时推开物体。
    //这个脚本推开所有角色碰到物体时推开物体
    var pushPower=2.0;
    function OnControllerColliderHit(hit: OnControllerColliderHit)

    {
      Var body:Rigidbody=hit.collider.attachedRigidboby;
      //无刚体
      if(body==null||body.isKinematic)
      return;
      //不推开我们身后的物体
      if(hit.moveDirection.y<-0.3)
      return;
      //从移动方向计算推的方向
      //只推开物体到旁边而不是上下
      var pushDir=Vector3(hit.moveDirection.x,0,hit.moveDirection.z)
      //如果知道角色移动有多快
      //然后你就可以用它乘以推动速度
      //使用推力
      body.velocity=pushDir*pushPower;
    }


    ◆function OnDisable():void


    描述:当这个行为禁用或不活动时这个函数被调用。
    当物体被销毁的时候这个函数也会被调用并可以用于任何清理的代码。当脚本在编译结束后被加载时,OnDisable将被调用,然后脚本加载完成后OnEnable被调用。
    Function OnDisable()

    {
       Print("scrip was remove”);
    }
    OnDisabe 不能作为一个coroutine.


    ◆function OnDisconnectedFromServer(mode:NetworkDisconnection):void


    描述:当链接挂失或服务器断开时在客户端用这个函数。
    Function OnDisconnectedFromServer(info.NetworkDisconnection)

    {
        Debug.Log(“Disconnected from server”+info);
    }


    ◆function OnDrawGizmos():void


     描述:如果你想绘制可被点的Gizmos时,实现OnDrawGizmos,
     这允许你在场景中快速选择重要的物体。
    //在物体的位置上绘制光源灯泡
    function OnDrawGizmos()

    {
        Gizmos.DrawIcon(transform.position,”light Gizmo.tiff”);
    }

    ◆function OnDrawGizmosSelected():void


    描述:如果你想在物体被选择时绘制gizmos,实现这个OnDrawGizmosSelected。
    Gizmos只在物体被选择的时候绘制。Gizmos不能点选。这可以设置更容易,例如
    一个爆炸脚本可以绘制一个球显示爆炸半径。
    var explosionRadius=5.0;
    function OnDrawGizmosSelected()

    {
          //选中的时候显示爆炸半径
          Gizmos.color=Color.white;
          Gizmos.DrawSphere(transfom.position,explosinRadius);
    }


    ◆function OnEnable():void


    描述:当物体启用或激活时这个函数被调用
    function OnEnbale()

    {
        print(“script was enabled”);
    }


    ◆function OnFailedToconnect(error:NetworkConnectionError);void


    描述:当链接因为某些原因失败时在客户端上调用这个函数。
    失败的原因作为NetworkConnectionError枚举传入。
    function OnFailedToconnect (info:NetworkConnectionError)

    {
         Debug.Log(“Could not connect to server”+error);

    }
    ◆function OnFailedToConnectToMasterServer (error:NetworkConnectionError):void


    描述:当链接到主服务器出现问题时在客户端或服务器调用这个函数。
    错误的原因作为NetworkConnectionError枚举传入
    function OnFailedToConnectToMasterServer(info:NetworkConnectionError)

    {
        Debug.Log(“Could not connect to master server”+info);
    }


    ◆function OnGUI():void


    描述:OnGUI被调用来渲染并处理GUI事件。
    如果Monobehaviour的启用属性被设置为假,OnGUI()将不会被调用。
    function OnGUI()

    {
         if(GUI.Button(Rect(10,10,150,100),”I am a button”))

         {
            print(“You clicked the button”)
          }
    }
    参考GUI Scrtipting Guide 获取更多信息。


    ◆function OnJointBreak(breakForce:float):void


    描述:当附加到相同游戏物体上的关节被断开时调用
    当一个力大于这个关节的breakForce时,关节将被断开,当关节断开时,OnJointBreak将被调用,应用到关节的断开力将被传入,OnJointBreak之后这个关节将自动从游戏物体移除。参见:Joint.breakForce


    ◆function OnLevelWasLoaded(level:int):void


    描述:这个函数在一个新的关卡被加载之后被调用
    //level是被加载的关卡的索引。使用菜单项File>Build Settings来查看索引引用的是那个场景,参见:Application.LoadLevel
    //当关卡13被加载的关卡的索引”Woohoo”
    Function OnLevelWasLoaded(level:int)

    {
        if(level==13)

        {
            Print(“Woohoo”);
        }
    }
    OnLevelWasLoaded 可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnMouseDown():void


    描述:当用户在GUIElement或Collider上按下鼠标按钮时OnMouseDown被调用
    这个事件被发送到所有附加在Collider或GUIElement的脚本上。
    //加载名为“someLevel”的关卡
    //来响应用户单击
    Function OnMouseDown()

    {
        Application.LoadLevel(“SomeLevel”);
    }
    这个函数不会在属于Ignore Raycast的层上调用。
    OnMouseDown可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到的有附加在Collider或GUIElement的脚本上。

    ◆function OnMouseDrag():void


    描述:当用户在GUIElement或Collider上点击并按住鼠标时OnMouseDrag被调用。
    当鼠标被按下时OnMouseDrag将在每帧中被调用。
    //按住鼠标时使用材质颜色变暗
    function OnMouseDrag()

    {
         renderer.material.color-=Color.white*Time.deltaTime;
    }
    这个函数不会在属于Ignore Ray的层被调用 。
    OnMouseDrag可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到所有附加在collider或GUIElement的脚本上。


    ◆Function OnMouseEnter():void


    描述:当鼠标进入GUIElement或collider时,OnMouseEnter被调用。
    //附加这个脚本到网格
    //使用当鼠标经过这个网格时使它变红
    function OnMouseEnter()

    {
        renderer.material.color=Color.red;
    }


    这个函数不会在属于Ignore Raycast的层上调用。
    OnMouseEnter可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送所有附加在Collider或GUIElement的脚本上。


    ◆function OnMouseExit():void


    描述:当鼠标不再位于GUIElement或Collider上时,OnMouseExit被调用。
    OnMouseExit与OnMouseEnter相反
    //当鼠标在网格时
    //渐变材质的颜色色组件为零
    function OnMouseExit()

    {
        renderer.material.color=Color.white;
    }


    这个函数不会在属于Ignore Raycast的层上调用。
    OnMouseExit可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到所有附加在Collider或GUIElement上脚本上。


    ◆function OnMouseOver();void


    描述:当鼠标在GUIElement或Collider上时,OnMouseOver被调用。
    //当鼠标在网格上时
    //渐变材质的红色组件为零


    function OnMouseOver()

    {
         renderer.material.color-=Color(0.1,0,0)*Time.deltaTime;
    }


    这个函数不会在属于Ignore Raycast的层上调用。
    OnMouseOver可以是一个coroutine,简单地在这个函数中使用yield语句,这个事件被发送到所有附加在Collider或GUIElement的脚本上。


    ◆function OnMouseUP():void


    描述:当用户已经松开鼠标按钮时OnMouseUp调用。
    在GUIElement或Collider上松开鼠标时OnMouseUp被调用。
    //加载名为”someLevel”的关卡
    //来响应用户单击
    function OnMouseUp()

    {
        Application.LoadLevel(“SomeLevel”);
    }


    这个函数不会在属于Ignore Raycast的层上调用。
    OnMouseUp可以是一个coroution,简单地在这个函数yield语句。这个事件被发送到所有附加在Collider或GUIElement的脚本上。


    ◆function OnNetworkInstantiate(info:NetworkMessageInfo):void


    描述:当一个物体使用Network.Instantiate进行网络初始化在该物体上调用这个函数。
    这个对于禁用或启用一个已经初始化的物体组件来说是非常有用的,它们的行为取决与它们是在本地还是在远端。
     注意:在NetworkMessageInfo里的networkView属性不能在OnNetworkInstantiate里使用。
    function OnNetworkInstantiate(info:NetworkMessageInfo)

    {
         Debug.Log(“New object instantiated by”+info.sender);
    }


    ◆function onParticleCollision(other:GameObject):void


    描述:当一个粒子碰到一个碰撞器时OnParticleCollision被调用。
    这个可以在游戏物体被粒子击中时应用伤害到它的上面,这个消息被发送到所有附加到
    WorldParticleCollider 的脚本上和被击中的Collider上,这个消息只有当你在
    WorldParticleCollider检视面板中启用了sendCollisionMessage时才会被发送。
    //应用力到所有被粒子击中的刚体上


    function OnParticleCollison(other:GameObject)

    {
       var body=other.rigidbody;
       if(body)

       {
         var direction=other.transform.position+transform.position;
         direction=direction.normalized;
         body.AddForce(direction*5);
       }
    }


    OnParticleCollision可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnPlayerConnected(player:NetworkPlayer):void


    描述:当一个新玩家成功连接在服务器上调用这个函数。
    private var playerCount:int=0;
    function OnPlayerConnect(player.NetworkPlayer)

    {
       Debug.Log(“Player”+playerCount”+connected from”+player.ip.Address+”:”+player.port);
       //用玩家的信息构建一个数据结构
    }


    ◆function OnPlayerDisconnected(player:NetworkPlayer):void


    描述:当玩家从服务器断开时在服务器上调用这个函数。

    function OnPlayerDisconnected (player:NetworkPlayer)

    {
       Debug.Log(“Clean up after player”+player);
       Network.RemoveRPCs(player);
       Network.DestroyPlayerObject(player);
    }


    ◆function OnpostRender():void


    描述:OnPostRender在相机渲染场景之后调用。
    只有脚本被附加到相机上时才会调用这个函数。OnPostRender可以是一个coroutine,简单地在这个函数中使用yield语句。
    OnPostRender在相机渲染完所有它的物体之后被调用。如果你想在所有相机和GUI被渲染之后做一些事情,使用WaitForEndFrame coroutine
    参见:OnPreRender,WaitForEndOfFrame
    //当附加到机时,将消除
    //相机纹理的alpha通道为纯白色
    //如果你有一个渲染纹理并想将它显示在GUI上时可以使用这个函数
    private var mat:Material;
    function OnPostRender()

    {
        //创建一个只渲染白色到alpha通道的着色器
        if(mat)
        {
          mat=new Material(“Shader Hidden SetAlpha”+)
         “SubShader{“+”pass{”+”ZTest Always Cull off Zwrite Off”+”ColorMaskA”+”Color  (1,1,1,1)”+”}”+”}”+”}”);
        }
    }


    // 用上述着色器绘制一个全屏四边形
    GL.PushMatrix();
    GL.LoadOrtho();
    for(var i=0;i<mat.pssCount;++i)

    {
      mat.SetPass(i);
      GL.Begin(GL.QUADS);
      GL.Vertex3(0,0,0.1);
      GL.Vertex3(1,0,0.1);
      GL.Vertex3(1,1,0.1);
      GL.Vertex3(0,1,0.1);
      GL.End();
     }
     GL.PopMatrix();
    }

    ///////////////////////////////////////////////////


    // When attached to a camera, will clear alpha channel
    // of camera's render texture to pure white.
    // Useful if you have camera rendering into a texture and later
    // want to display it in GUI.

    private var mat : Material;

    function OnPostRender() {
    // Create a shader that renders white only to alpha channel
    if(!mat) {
    mat = new Material( "Shader "Hidden/SetAlpha" {" +
    "SubShader {" +
    " Pass {" +
    " ZTest Always Cull Off ZWrite Off" +
    " ColorMask A" +
    " Color (1,1,1,1)" +
    " }" +
    "}" +
    "}"
    );
    }
    // Draw a quad over the whole screen with the above shader
    GL.PushMatrix ();
    GL.LoadOrtho ();
    for (var i = 0; i < mat.passCount; ++i) {
    mat.SetPass (i);
    GL.Begin( GL.QUADS );
    GL.Vertex3( 0, 0, 0.1 );
    GL.Vertex3( 1, 0, 0.1 );
    GL.Vertex3( 1, 1, 0.1 );
    GL.Vertex3( 0, 1, 0.1 );
    GL.End();
    }
    GL.PopMatrix ();
    }

    ////////////////////////////////////////////


    ◆function OnPreCull():void


    描述:OnPreCull在相机开始裁剪场景之前调用
    裁剪决定那个物体对于相机来说是可见的。OnPreCull仅仅在这个过程之间被调用。
    只有脚本被附加到相机上时才会调用这个函数
    如果你想改变相机的视觉参数(例如fieldOfView或者仅是变换),就在这里做这个。
    场景物体的可见性将基于相机参数在OnPerCull之后确定。


    ◆function OnRender():void


    描述:OnpreRender在相机开始渲染场景之前调用。
    只用脚本被附加到相机上时才会调用这个函数。
    注意如是果你在这里改变了相机的视野参数(例如fieldOfView),它们将影响下一帧。用OnPreCull代替。OnPreRender可以是一个coroutine,简单地在这个函数中使用yield语句。
    参见:OnPostRender


    ◆function OnRenderImage(source:RenderTexture,destination:RenderTexture):void


    描述:OnRenderImage在所有渲染完成后被调用,来渲染图片的后期处理效果(限于Unity Pro)
    这允许你使用基于shader的过滤器来处理最后的图片。进入图片是source渲染纹理结果是destination渲染纹理。当有多个图片过滤附加在相机上时,它们序列化地处理图片,将第一个过滤器的目标作为下一个过滤器的源。
    这个消息被发送到所有附加在相机上脚本。
    参见:Unity Pro 中的image effects


    ◆function OnRenderObject(queueindex:int):void


    描述:OnRenderObject被用来渲染你自己的物体,使用Graphics.DarwMesh或者其他函数。
    queueIndex指定用来渲染物体的render queue。可以使用RenderBeforeQueues属性来指定你想绘制这个物体到哪里渲染队列。


    ◆function OnserializeNetworkView(stream:Bitstream.info:NetworkMessageInfo):void


    描述:用来在一个被网络视监控的脚本中自定义变量同步
    它自动决定被序列化的变量是否应该发送或接收,查看下面的例子获取更好的描述:
    //这个物体的生命信息
    var currentHealth:int=0;
    function OnSerializeNetworkView(stream:BitStream,info:NetworkMessageInfo)

    {
       if(stream.isWriting)

       {
          var  health:int=currentHealth;
          stream.Serialize(health);
        }
     else

       {
         var health:int=0;
         stream.Serialize(health);
         currentHealth=health;
       }
    }


    ◆function OnServerInitialized():void


    描述:当Network.InitializeServer被调用并完成时,在服务器上调用这个函数。
    function OnServerInitialized()

    {
        Debug.Log(“Server initialize and ready”);
    }


    ◆function OnTriggerEnter(other:Collider):void


    描述:当这个Collider other进入trigger时OnTriggerEnter被调用。
    这个消息被发送到这个触发器碰撞器和接触到触发器的刚体(或者是碰撞器如果没有刚体)。注息如果碰撞器附加了一个刚体,也只发送触发器事件。
    //销毁所有进入该触发器的物体
    function OntriggerEnter(other:Collider)

    {
        Destroy(other.gameObject);
    }


    OnTriggerEnter可以是一个coroutine简单地在这个函数中使用yield语句。


    ◆function OnTriggerExit(other:Collider):void


    描述:当这个Collider other停止触碰trigger时OnTriggerExit被调用。
    这个消息被发送到触发和接触到这个触发器的碰撞器。注意如果碰撞附加了一个刚体,也只发送触发器事件。
    //销毁所有离开该触发器的物体
    function OntriggerExit (other:Collider)

    {
       Destroy(other.gameObject);
    }
    OnTriggerExit可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnTriggerStay(other:Collider):void


    描述:对于每个Collider other,当它触碰到trigger时,OnTriggerStay会在每一帧中都被调用。
    这个消息被发送到触发器和接触到这个触发器的碰撞器。注意如果碰撞器附加了一个刚体,也只发送触发器事件。
    //对所进入这个触发器的刚体使用一个向上的力
    function OnTriggerStay(other:Collider)

    {
       if(other.attachedRigidbody)

       {
           other.attachedRigidbody.AddForce(Vector3.up*10);
       }
    }
    OnTriggerStay可以是一个coroutine,简单地在这个函数中使用yield语句。


    ◆function OnWillRenderObject():void


    描述:如果物体可见,每个相机都会调用OnWillRenderObject。
    这个函数在裁剪过程中被调用,在渲染所有被裁剪的物体之前被调用。可以用这个来创建具有依赖性的渲染纹理,只有在被渲染的物体可见时才更新这个渲染纹理。作为一个例子,水组件就使用这个。Camera.current将被设置为要渲染这个物体的相机


    ◆function Reset():void


    描述:Reset在用户点击检视面版的上下文菜单或者第一次添加该组件被调用。Reset只在编辑模式下调用。Reset最常用于在检视面板中给定一个好的默认值
    //设置target为一个默认的值
    //这可以用于跟随相机
    var target:GameObject;
    function Reset(){
       //如果target没有赋值,设置它
       if(!target)

       {
           target=GameObject.FindWithTag(“play”);
       }
    }


    ◆function Start():void


    描述:Start在所有Update方法被第一次调用前调用。
    Start在行为的生命期内只调用一次。Awake和Start的不同在于Start只在脚本实例被启用时调用。这个允许你延迟所有初始化代码,知道真正需要它们的时候,Awake总是在任何Start函数之前调用。这允许你调整脚本的初始化顺序。Start不能作为一个coroutine
     Start函数在所有脚本实例的Awake函数调用之后调用。
     //初始化target变量
     //target是私有的并且不能在检视面板中编辑
    parivate var target:GameObject;
    function Start()

    {
       target=GameObject.FindWithTag(“Player”);
    }
    ◆function Update():void
    描述:如果MonoBehaviour被启用,Update将在每帧中调用。
    Update是最常用的函数,来实现任何游戏行为。
    //向前以1米的速度移动物体
    function Update()

    {
        transform.Translate(0,0,Time.deltaTime*1);
    }
    为了得到从最后一次调用Update的消逝时间,使用Time.deltaTime。如果该Behaviour
    被启用,该函数将在每帧中调用,重载这个函数,以便给你的组件提供功能。
    继承的成员
    继承的变量
    endbled 启用Behaviours被更新,禁用Behaviour不被更新
    transform附加到这个GameObject的Transform(如果没有null)
    rigidbody 附加到这个GameObject的Rigidbody(如果没有null)
    camera             附加到这个GameObject的Camera(如果没有null)
    light  附加到这个GameObject的Light(如果没有null)
    animation            附加到这个GameObject的Animation(如果没有null)
    constantForce附加到这个GameObject的ConstantForce(如果没有null)
    renderer             附加到这个GameObject的Renderer(如果没有null)
    audio 附加到这个GameObject的Audio(如果没有null)
    guiText 附加到这个GameObject的GUIText(如果没有null)
    networkView附加到这个GameObject的NetworkView(只读)(如果没有null)
    guiTexture附加到这个GameObject的GUITexture(只读)(如果没有null)
    collider 附加到这个GameObject的Collider(如果没有null)
    hingeJoint附加到这个GameObject的HingeJoint(如果没有null)
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有null)
    gameObject这个组件附加的游戏物体。一个组件总是附加到一个游戏物体
    tag  这个游戏物体的标签
    name 对象的名称
    hideFlags 该物体是否被隐藏,保存在场景或被用户修改
    继承的函数
    GetComponent           返回type类型组件,如果游戏物体上附加了一个如果没有返回
    null。
    GetComponentInChildren   返回type类型的组件,这个组件位于GameObject或任何它的子
    物体上,使用深度优先搜索。
    GetComponentsInChildren  返回所有type类型的组件,这些组件位于GameObject或任何它
    的子物体上。
    GetComponents           返回GameObject上所有type类型的组件。
    CompareTag              这个游戏物体被标签为tag?
    SendmessageUpwards      在这个游戏物体的每个MonoBehaviour和该行为的祖先上
    调用名为methodName方法
    SendMessage 在这个游戏物体上的每个MonoBehaviour上调用methodName
    方法。
    BroadcastMessage在这个游戏物体或其任何子上的每个MonoBehaviour上调用
    methodName方法。
    GetInstanceID 返回该物体的实例ID。
    继承的类函数
    Operator bool 这个物体存在吗?
    Instantiate 克隆original物体并返回这个克隆。
    Destroy  移除一个游戏物体,组件或资源。
     
    DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替。
    FindObjectOfType返回所有类型为type的激活物体。
    FindObjectOfType返回第一个类型为type的激活物体。
    Operator== 比较两个物体是否相同。
    Operator!=  比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。


     Terrain
    类,继承自MonoBehaviour


    渲染地形的Terrain


    变量


    ◆var basemapDistance:float


    描述:超出basemapDistance的高度图,将使用预先计算的地解析度basemap。
    这个可以改善远处块的性能。Unity混合任意数量的地形纹理,使用条图来渲染近处的高度图。
    function Start()

    {
        Terrain.activeTerrain.basemapDistance=100;
    }


    ◆var castShadows:bool


    描述:地形应该投射阴影?


    ◆var detailObjectDistance:float


    描述:在这个距离内细节将被显示。
    function Start()

    {
        Terrain.activeTerrain.detailObjectDistance=40;
    }


    ◆var heightmapMaximumLOD:int


    描述:让你实质降低用于渲染的高度图解析度
    这个可用在低端的显卡上并不会显示最高的LOD地形。值为0表示总是显示最高细节。
    值为1表示三角形数量将减小到1/4,高度图的解析度将是宽度和高度的一半。
    function Start()

    {
       Terrain.activeTerrain.heightmapMaximumLOD=1;
    }


    ◆var heightmapPixelError:float


    描述:当切换LOD时大约有多少像素时地形将处于错误的情况。
    较高的值减少多边形的绘制数量。
    function Start()

    {
         Terrain.activeTerrain.heightmapPixelError=10;
    }


    ◆var Lighting:Terrain.Lighting


    描述:地形光照模式
    参见:TerrainLighting枚举,Terrain Lightmap,terrain Settings


    ◆var terrainData:TerrainData


    描述:存储在高度图中的地形数据,地形纹理,细节网格和树。


    ◆var treebillboardDistance:float


    描述:到相机的距离超过这个值,树只被作为公告板渲染。
    降低这个值将改善性能,但是使过度看起来更差因为公告板和树的不同将更加明显。
    function Start()

    {
          Terrain.activeTerrain.treeBillboardDistance=100;
    }


    ◆var treeCrossFadeLength:float


    描述:树从公告变换到网格到网格的总距离增量。
    降低这个值将使变换发生的越快。设置为0时,在从网格切换分告表示时将立即发生。
    function Start()

    {
         Terrain.activeTerrain.treeCrossFadeLength=20;
    }


    ◆var treeDistance:float


    描述:渲染树的最大距离。
    这个值越高,越远的树将看到,运行的也更慢。
    参见:Terrain.treeBillboardDistance
    function Start()

    {
        Terrain.activeTerrain.treeDistance=2000;
    }


    ◆var treeMaximumFull.ODCount:int
    描述:全LOD时渲染树的最大数量。
    这个是一个简单的设置用来阻止太多的楼以过高的解析度和密度被绘制。因为如果
    treeMaximumFullLodCount过高,树将不会消失,你应该修改treeBillboardDistance为不
    包含。
    function Start()

    {
         Terrain.activeTerrain.treeMaximumFullLODCount=200;
    }


    函数
    ◆function SampleHeight(worldPositon:Vector3):float
    描述:在世界空间的给定位置处采样高度。
    function LateUpdate()

    {
        transfom.positon.y=Terrain.activeTerrain.SampleHeght(transfom.position);
    }


    ◆function SetNeighbors(left:Terrain,top:Terrain,right:Terrain,bottom:Terrain):void
    描述:允许你在相邻地形间设置连接
    这个确保LOD在相邻地形上相同。注意,在一个地形上调用这个函数是不够的,你需要在每个地形上设置邻居。


    类变量


    ◆static var activeTerrain: Terrain


    描述:激活的地形。这个是用来在场景中获取主地形的快捷方式。


    类方法


    ◆Static functin CreateTerrainGameObject(assignTerrain: TerrainData): GameObject


    描述:从TerrainData创建一个包含碰撞器的地形。
    继承的成员
    继承的变量 
    Enabled 启用Behaviour被更新,禁用Behaviours不被更新。
    transform 附加到该GameObject的Transform(没有返回null)
    rigidbody 附加到该GameObject的Rigidbody(没有返回null)
    camera 附加到该GameObject的Camera(没有返回null)
    light 附加到该GameObject的Light(没有返回null)
    animation 附加到该GameObject的Animation(没有返回null)
    constantForce 附加到该GameObject的ConstantForce(没有返回null)
    renderer 附加到该GameObject的Renderer(没有返回null)
    audio 附加到该GameObject的Audio(没有返回null)
    guiText 附加到该GameObject的GuiText(没有返回null)
    networkView 附加到该GameObject的NetworkView(没有返回null)
    guiTexture 附加到该GameObject的GuiTexture(没有返回null)
    collider 附加到该GameObject的Collider(没有返回null)
    hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
    particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
    gameObject 该组件所附加的游戏物体。组件总是会附加到游戏物体上
    tag 该游戏物体的标签。
    name 对象的名称
    hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
    继承的函数 
    Invok e 在time秒调用methodName方法。
    Invok Repeating 在time秒调用methodName方法。
    CancelInvoke 取消所有在这个MonoBehaviour上的调用
    IsInvoking 是否有任何对methodName的调用在等待?
    StartCoroutine 开始一个coroutine
    StopCoroutine 停止所有运行在这个行为上的名为methodName的coroutine
    StopAllCoroutines 停止所有运行在这个行为上的coroutine
    GetComponent  返回type类型的组件,如果游戏物体上附加了一个,如果没有
      返回null。
    GetComponcetInChildren 返回type类型的组件,这个组件位于GameObject或任何它的子
      物体上。使用深度优先搜索
    GetComponcetsInChildren 返回所有type类型组件,这些组件位于Gameobject或任何它的
      子物体上。
    GetComponents  返回GameObject上所有type类型的组件。
    CompareTag  这个游戏物体被标签为tag?
    SendMessageUpwards  在这个游戏物体的每个MonoBehaviour和该行为的祖先上调用
      名为methodName方法。
    SendMessage  在这个游戏物体上的每个MonoBehaviour上调用methodName
    方法。
    BroadcastMessage在这个游戏物体或其2任何子的每个MonoBehaviour上调用
    methodName方法。
    GetInstanceID 返回该物体的实例ID。
    继承的消息传递
    Update  如果MonoBehaviour被启用,Update将在每帧中
    调用。
    LateUpdate 如果该Behaviour被禁用,LateUpdate将在每帧中
    调用。
    FixedUpdate 如果MonoBehaviour被启用,这个函数将在每帧中调用。
    Awake  当脚本实例被加载时,Awake被调用。
    StartStart在所有Update方法被第一次调用前调用。
    Reset  Reset在用户点击检视面板的上下文菜单或第一次添加该组件时
    被调用。
    OnMouseEnter当鼠标进入GUIElement或Collider时,OnMouseEnter被调用。
    OnMouseOver 当鼠标在GUIElement或Collider时,OnMouseEnter被调用。
    OnMouseExit 当鼠标不再位于GUIElement或Collider上时,OnMouseExit被调用。
    OnMouseDown当用户在GUIElement或Collider上按下鼠标按钮时
    ,OnMouseDown被调用。
    OnMouseUp 当户已经松开鼠标按钮时OnMouseUp被调用。
    OnMouseDrag 当用户在EUIElement或Collider上点击并按住鼠标时
    OnMouseDrag被调用。
    OnTriggerEnter当这个Collider other进入trigger时OnTriggerEnter被调用。
    OnTriggerExit 当这个Collider other停止触碰trigger进OnTriggerExit被调用。
    OnTriggerStay 对于每个Collider other,当它触碰到trigger时,OnTriggerStay
    会在每一帧中都会被调用。
    OnCollisionEnter当这个碰撞器刚体开始触碰另一个刚体碰撞器
     
    时OnCollisionEnter被调用。
    OnCollisonExit 对于每个与碰撞器刚体停止触碰另一个刚体碰撞器时
    OnCollisionExit被调用。
    OnCollisonStay对于每个与刚体碰撞器相触的碰撞器刚体OnCollisonStay将在每
    一帧中被调用。
    OnControllerColliderHit  在移动的时候,控制器碰到一个碰撞器时OnControllerColliderHit
    被调用。
    OnJointBreak 当附加到相同游戏物体上的关节被断开时调用。
    OnParticleCollision当一个粒子碰到一个碰撞器时OnParticleCollision被调用。
    OnBecameVisibleOnBecamevisible函数在这个渲染器对任何相机变得可见时被
    调用。
    OnBecameInvisibleOnBecamevisible函数在这个渲染器对任何相机变得不可见时被
    调用。
    OnLevelWasLoaded这个函数在一个新的关卡被加载之后被调用。
    OnEnable  当物体启用或激活时这个函数被调用。
    OnDisable 当这个行为禁用或不活动时这个函数被调用。
    OnPreCull OnPreCull在相机开始裁剪场景之前调用。
    OnPreRender OnPreRender在相机开始渲染场景之后调用。
    OnPostRender OnPostRender 在相渲染场景之后调用。
    OnRenderObjectOnRenderObject被用来渲染你自己的物体,使用
    Graphics.DrawMesh或者其他函数。
    OnWillRenderObject  如果物体可见,每个相机都会调用OnWillRenderObject。
    OnGUI  OnGUI被调用来渲染并处理GUI事件。
    OnRenderImageOnRenderImage在所有渲染完成后被调用,来渲染图片。
    OnDrawGizmosSelected  如果你想在物体被选择时绘制gizmos,实现这个
    OnDrawGizmosSelected.
    OnDrawGizmos如果你想绘制可被点选的gizmos时,实现OnDrawGizmos。
    OnApplicationPause  当玩家暂停时发送到所有游戏物体。
    OnApllicationQuit在应用退出之前发送到所有游戏物体。
    OnPlayerConnected  当一个新玩家成功连接时在服务器上调用这个函数。
    OnServerInitialized当Network.InitializeServer被调用并完成时,在服务上调用这
    个函数。
    OnConnectedToServer  当成功链接到服务器上时在客户端调用这个函数。
    OnPlayerDisconnected  当玩家从服务器断开时在服务器上调用这个函数。
    OndisconnectedFormServer 当链接丢失或服务器断开时在客户端调用这个函数。
    OnFailedToConnect当链接因为某些原失败时在客户端上调用这个
     
    函数


    OnFailedToConnectToMasterServer   当链接到主服务器出现问题时在客户端或服务器端调用这个函数。
    OnNetworkInstantiate   当一个物体使用Network.Instantiate进行网络初始化时在该物体上调用这个函数。
    OnSerializeNetworkView   用来在一个被网络视监控的脚本中自定义变量同步。
    继承的类函数
    operator bool      这个物体存在吗?
    Instantiate        克隆original物体并返回这个克隆。
    Destroy            移除一个游戏物体,组件或资源。
    DestroyImmediate   立即销毁物体obj。强烈建议使用Destroy代替。
    FindObjectsOfType  返回所有类型为type的激活物体。
    FindObjectOfType   返回第一个类型为type的激活物体。
    operator ==        比较两个物体是否相同。
    operator !=        比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。


    NetworkView 类,继承自Behaviour


    网络视是多用户游戏的绑定物。
    使用这个你可以准确定义什么应该通过网络同步,和如何同步,游戏物体可以有NetworkView组件,该组件可以被定义为观察物体的其他组件,可以在Network View manual page和component reference page获取更多信息。


    变量


    ◆ var group : int


    描述: 这个网络视所在的网格组。
    所有的网格消息和RPC调用通过这个组。
    function Awake()

    {
        //通过组1发送来自这个网格视的所有消息
        Network View.group=1;
    }


    ◆ var isMine : bool


    描述:这个网格视是有这个物体控制吗?
    function OnNetworkInstantiate(info: NetworkMessageInfo)

    {
        if(networkView.isMine)

            Debug.Log(“New object instanted by me”);
        else
            Debug.Log(“New object instantiated by”+info.sender);
    }


    ◆ var obseved : Component


    描述:网络视监控的组件。
     
    //打印含有由数组中给出的viewID的对象的名称(Print the names of the objects which have the view IDs given in the array)
    function PrintNames(viewIDs: Array)

    {
       for (var ID: NetworkViewID in IDs)

       {
           Debug.log(“Finding”+ID);
           Var view : NetworkView = networkView.Find(ID);
           Debug.log(view.observed.name);
       }
    }


    ◆ var owner : NetworkPlayer


    描述: 拥有这个网络视的NetworkPlayer
    function OnNetworkInstantiate(info: NetworkMessageInfo)

    {
       if(!networkView.isMine)
           Debug.log(“New object instantiated by” + networkView.owner);
    }


    ◆ var stateSynchrohization: NetworkStateSynchronization


    描述:为这个网络视设置的NetworkStateSynchronization类型。
    确保NetworkView在所有机器上使用相同可靠的方法是你的责任。在状态同步已经发生后不要在运行时改变状态的可靠性。


    ◆ var viewID: NetworkViewID


    描述:这个网络视的ViewID。


    函数


    ◆ function RPC(name: string, mode: RPCMode, params args:object[]): void


    描述:在所有连接端调用一个RPC函数。
    调用的函数必须有@RPC标志([RPC]用于C Sharp)。NetworkView必须附加到GameObject,在这个物体上RPC函数能够被调用。NetworkView用于其他什么地方或者是仅仅用于RPC函数是没有关系的。如果他仅仅用于RPC函数,state synchronization应该被关掉。Ovserved属性设置为none,在整个场景中RPC函数的名称应该是唯一的,如果不同脚本的两个RPC函数具有相同的名称,仅有一个会被调用。RPC调用总是确保执行的顺序与他们调用的顺序相同。用NetworkView.group为NetworkView设置的通信用,被用于RPC调用。为了获取RPC自身的信息,可以添加一个NetworkMessageInfo参数到函数申明中,它将自动包含这个信息。这样的做的时候你不需要改变调用RPC函数的方式,可以参考manual的RPC部分以便获取更多关于RPC的信息。可用的RPC参数为int,float,string,NetworkPlayer,NetworkViewID,Vector3和Quaternion。
    var cubePrefab : Transform;
    function OnGUI()
    {
       if (GUILayout.Button(“SpawnBox”))
       {
           var viewID = Netwok.AllocateViewID();
     
           networkView.RPC(“SpawnBox”,
                       RPCMode.AllBuffered,
                       viewID,
                       transform.position);
        }
    }
    @RPC
    function SpawnBox (viewID : NetworkViewID, location : Vector3) {
    // Instantate the prefab locally
    var clone : Transform;
    clone = Instantiate(cubePrefab, location, Quaternion.identity);
    var nView : NetworkView;
    nView = clone.GetComponent(NetworkView);
    nView.viewID = viewID;
    }


    ◆ function RPC(name: string, target: NetworkPlayer, params args: object[]): void


    描述:在特定的玩家端调用RPC


    ◆ function SetSeope(player: NetworkPlayer, relevancy: bool): bool


    描述:相对于一个特定的网络玩家这是网络视的范围
    这可以用来实现相关设置,设置它为真假取决于你是否想这个玩家从网络接收更新。


    类方法


    ◆ static function Find(viewID: NetworkViewID): NetworkView


    描述:基于NetworkViewID查找一个网络视。
    // 打印物体的名称,这些物体具有数组中给定的视ID (Print the names of the objects which have theview IDs given in the array)
    function PrintNames(viewIDs : Array)

    {
        for (var ID: NetworkViewID in IDs)

        {
            Debug.Log("Finding "+ID);
            var view : NetworkView = networkView.Find(ID);
            Debug.Log(view.observed.name);
        }
    }


    继承的成员
    继承的变量


    enabled 启用Behaviours被更新,禁用Behaviours不被更新。
    transform 附加到这个GameObject的Transform(如果没有为null)。
    rigidbody 附加到这个GameObject的Rigidbody(如果没有为null)。
    camera 附加到这个GameObject的Camera(如果没有为null)。
    light 附加到这个GameObject的Light(如果没有为null)。
    animation 附加到这个GameObject的Animation(如果没有为null)。
    constantForce    附加到这个GameObject的ConstantForce(如果没有为null)。
    renderer 附加到这个GameObject的Renderer(如果没有为null)。
    audio 附加到这个GameObject的AudioSource(如果没有为null)。
    guiText 附加到这个GameObject的GUIText(如果没有为null)。
    networkView 附加到这个GameObject的NetworkView(只读)。(如果没有为null)
    guiTexture 附加到这个GameObject的GUITexture(只读)。(如果没有为null)
    collider 附加到这个GameObject的Collider(如果没有为null)。
    hingeJoint 附加到这个GameObject的HingeJoint(如果没有为null)。
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有为null)。
    gameObject       这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
    tag              这个游戏物体的标签。
    name             对象的名称。
    hideFlags        该物体是否被隐藏,保存在场景中或被用户修改?
    继承的函数
    GetComponent             返回type类型的组件,如果游戏物体上附加了一个,如果没有返回null。
    GetComponentInChildren   返回type类型的组件,这个组件位于GameObject或任何它的子物体上,使用深度优先搜索。
    GetComponentsInChildren  返回所有type类型的组件,这些组件位于GameObject或任何它的子物体上。
    GetComponents            返回GameObject上所有type类型的组件。
    CompareTag               这个游戏物体标签为tag?
    SendMessageUpwards       在这个游戏物体的每个MonoBehaviour和该行为的祖先上调用名为methodName方法。
    SendMessage              在这个游戏物体的每个MonoBehaviour上调用methodName方法。
    BroadcastMessage         在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
    GetInstanceID            返回该物体的实例id。
    继承的类函数
    operator bool      这个物体存在吗?
    Instantiate        克隆original物体并返回这个克隆。
    Destroy            移除一个游戏物体,组件或资源。
    DestroyImmediate   立即销毁物体obj。强烈建议使用Destroy代替。
    FindObjectsOfType  返回所有类型为type的激活物体。
    FindObjectOfType   返回第一个类型为type的激活物体。
    operator ==        比较两个物体是否相同。
    operator !=        比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。


    Projector类,继承自Behaviour。


    脚本界面就是一个Projector组件。
    这个Projector可用于场景工程中的任何材料——就像一个真实的世界。这类的属性值就是Projector的检查值。
    它可以用来执行斑点或投射阴影。你也可以投射纹理动画或渲染纹理在电影场景的另一个部分。所有物体投影的视图在其观点和提供的材料中。
    没有快捷方式在游戏对象或者组件来访问Projector,所以你必须使用GetComponent来做:
    function Start()

    {
        // 获取projector
        var proj.Projector=GetComponent(Projector);
        //使用这个
        Proj.nearClipPlane=0.5;
    }
    参见:projector.component;


    变量


    ◆var aspectRatio:float


    描述:投影的长宽比。
    这个是投影的宽度除以高度。比为1.0使这个投影为正方形:比为2.0使得宽为高的2倍。
    function Start()

    {
        var proj : Projector = GetComponent (Projector);
        proj.aspectRatio = 2.0;
    }
     参见:projector component.


    ◆var farClipPlane:float
    描述:远裁剪面的距离。
    投影器将不会影响任何运离这个距离的物体。
    function Start()

    {
        var proj : Projector = GetComponent (Projector);
        proj.farClipPlane = 20.0;
    }
    参见:projector component


    ◆var fieldofView:float


    描述:投影的视野,以度为单位。
    这是垂直视野:水平FOV取决于aspectRatio。当投射器是正交时fieldOfView被忽略
    (参考orthographic)
    function Start()

    {
        var proj : Projector = GetComponent (Projector);
        proj.fieldOfView = 80.0;
    }
     参见:project component


    ◆var ignoreLayers:int


    描述:那个物体层将这个投射器忽略。
    参见layer mask
    缺省为零,没有层被忽略,在ignoreLayers中设置的每个位将使这个层不会被投射器影
    响。
    function Start()

    {
        var proj : Projector = GetComponent (Projector);
        //使投射器忽略默认的(0)层
        proj.ignoreLayers = (1<<0);
    }
    参见:projector component,Layers.


    ◆var material:material
    描述:这个材质将被投射到每个物体上
     
     如果没有设置材质,投射器不会做任何事情,Standard Assets中的Blob.Shadow文件夹包含一个投射器材质的例子
     参见:projector component,Material类。


    ◆var nearClipPlane:float
    描述:近裁剪面的距离。
    投影器将不会影响任何比这个距离近的物体。
    function Start()

    {
       var proj : Projector = GetComponent (Projector);
       proj.nearClipPlane = 0.5;
    }
     参见:projector component;


    ◆var orthographic:bool
    描述:投射是正交的(true)还是透视的(false)?
    当正交为true时,投影被orghographicSize定义。
    当正交为false时,投射被fieldOfView定义
    function Start()

    {
       var proj : Projector = GetComponent (Projector);
       proj.orthographic = true;
    }
    参见:projector component


    ◆var orthographicSize:float
    描述:在正交模式下投射的一半尺寸。
    这个为投影体垂直大小的一半。水平投射的大小取决于aspectRatio,投射器不是正交时,
    orthographicSize被忽略(参考orthographic)
    function Start()

    {
        var proj : Projector = GetComponent (Projector);
        proj.orthographic = true;
        proj.orthographicSize = 2.0;
    }
    参见:projector component


    继承的成员
    继承的变量


    enabled              启用Behaviours被更新,禁用Behaviours不被更新。
    transform             附加到这个GameObject的Transform(如果没有为null)。
    rigidbody             附加到这个GameObject的Rigidbody(如果没有为null)。
    camera               附加到这个GameObject的Camera(如果没有为null)。
    light                 附加到这个GameObject的Light(如果没有为null)。
    animation            附加到这个GameObject的Animation(如果没有为null)。
    constantForce         附加到这个GameObject的ConstantForce(如果没有为null)。
    renderer             附加到这个GameObject的Renderer(如果没有为null)。
    guiText              附加到这个GameObject的GUIText(如果没有为null)。
    networkView附加到这个GameObject的NetworkView(如果没有为null)。
    Collider 附加到这个GameObject的Collider(如果没有为null)。
    hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有为null)。
    gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
    Tag  这个游戏的标签。
    Name 对象的名称。
    hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
    继承的函数
    GetComponet  返回type类型的组件,如果游戏物体上附加一个,如果没有返回null。
    GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
    GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
    GetComponets返回Gameobject所有type类型的组件。
    CompareTag 这游戏物体被标签为tag?
    SendMessageUpwards  在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
    SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
    methodName方法。
    BoradcastMessage  在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
    GetInstanceID            返回该物体的实例id。
    继承的类函数
    Operator bool 这个物体存在吗?
    Instatiate  克隆original物体并返回这个克隆。
    Destroy  移除一个游戏物体,组件或资源。
    DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
    FindObjectsOfType返回所有类型为type的激活物体。
    FindObjectOfType返回第一个类型为type的激活物体。
    Operator== 比较两个物体是否相同。
    Operator!= 比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。
    Skybox
    类,继承自Behaviour
    Skybox component的脚本接口
    天空盒只有material属性
    参见:skybox component


    变量


    ◆var material:Material


    描述:该天空盒使用的材质。
    参见:skybox component
    继承的成员
    继承的变量
    Enabled 启用Behaviours被更新,禁用Behaviours不被更新。
    Transform附加到这个GameObject的Transform(如果没有为null)。
    Rigidbody附加到这个GameObject的Rigidbody(如果没有为null)。
    Camera 附加到这个GameObject的Camera(如果没有为null)。
    Light  附加到这个GameObject的Light(如果没有为null)。
    Animation附加到这个GameObject的Animation(如果没有为null)。
    constantForce附加到这个GameObject的ConstantForce(如果没有为null)。
    Renderer 附加到这个GameObject的Renderer(如果没有为null)。
    guiText 附加到这个GameObject的GUIText(如果没有为null)。
    networkView附加到这个GameObject的NetworkView(如果没有为null)。
    Collider 附加到这个GameObject的Collider(如果没有为null)。
    hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有为null)。
    gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
    Tag  这个游戏的标签。
    Name 对象的名称。
    hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
    继承的函数
    GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
                          回null。
    GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
    GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
    GetComponets返回Gameobject所有type类型的组件。
    CompareTag 这游戏物体被标签为tag?
    SendMessageUpwards  在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
    SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
    methodName方法。
    BoradcastMessage  在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
    GetInstanceID            返回该物体的实例id。
    继承的类函数
    Operator bool 这个物体存在吗?
    Instatiate  克隆original物体并返回这个克隆。
    Destroy  移除一个游戏物体,组件或资源。
    DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
    FindObjectsOfType返回所有类型为type的激活物体。
    FindObjectOfType返回第一个类型为type的激活物体。
    Operator== 比较两个物体是否相同。
    Operator!= 比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。
    collider
    类,继承自Component
    所有碰撞器的基类
    参见:BoxCollider,SphereCollider,CapsuleCollider,MeshCollider,PhysicCollider,Rigidbody.
    如果你打算经常移动一个碰撞器,建议再附加一个运动学刚体。
    变量


    ◆var attachedRigidbody:Rigidbody


    描述:该碰撞器所附加的刚体。
    如果碰撞器附加到非刚体上返回null。
    碰撞器被自动链接到刚体,这个刚体附加在与碰撞器相同的游戏物体或者父游戏物体上。
    //升起附加在碰撞器上的刚体
    Collider.attachedRigidbody.AddForce(1,0,1);


    ◆var bounds:Bounds


    描述:碰撞器在世界空间中的包围盒


    ◆var isTrigger:bool


    描述:该碰撞器是一个触发器?
    触发器不会与刚体碰撞,当刚体进入或离开这个触发器时,触发器将发送OnTriggerEnter
    OnTriggerExit和OnTriggerStay.
     //将附加的碰撞器转化为一个触发器
     Collider.isTrigger=true;


    ◆var material:PhysicMaterial


    描述:该碰撞器使用的材质。
    如果材质被碰撞器共享,它将复制材质并将它赋给碰撞器。
    //让碰撞器你冰一样
    Collider.material.dynamicFriction=0;
    collider.material.staticFricton=0;


    ◆var sharedMaterial:PhysicMaterial


    描述:该碰撞器的共享物理材质。
    修改这个材质将改变所有使用这个材质的碰撞器的表面属性。大多数情况下,你只要修改Collider.material。
    var material:PhysicMaterial;
    Collider.shareMaterial=material;


    函数


    ◆function ClosestPointOnBounds(position:Vector3):Vector3


    描述:到碰撞器包围上最近的点。
    这可以用来计算受到爆炸伤害时伤害点数。
    var hitPoints=100.0;
    function ApplyHitPoint(explosionPos:Vector3,radius:float)

    {
        //从爆炸位置到刚体表面的距离
        var closetPoint=collider.ClosePointOnBounds(explosionPos);
        var distance=Vector3f.Distance(closestPoint,explosionPos);
        //伤害点数随着到伤害点的距离而降低
        var hitPoints=1.0-Math.Clamp0|(distance/radius);
        //这是我们要用的最终伤害点数。最大为10
         hitPoints=10;
    }


    ◆function Raycast(ray:Ray,outhitInfo:RaycastHIt,distance:float):bool


    参数
    ray   射线的开始点和方向。
    hitInfo  如果没有近回真,hitInfo将包含更多关于碰撞器被碰到什么地方的信息(参考:
    RaycastHit).
    Distance 射线的长度
    返回:布尔值-当射线碰到任何碰撞器时为真,否则为假。
    描述:投射一个Ray,它忽略所有碰撞器除了这个。
    同上使用ray.origin和ray.direction而不是origin和disrection.
    var ray=Camera.main.ScreenPointToRay(Input.mousePostion);
    var hit:RaycastHit;
    if(collider.Raycast(ray,hit,100)

    {
         Debug.drawLine(ray.origin,hit.point);
    }


    消息传递


    ◆function OnCollisionEnter(collisionInfo:Collision):void


    描述:当这个碰撞器/刚体开始触碰另一个刚体/碰撞器时OnCollisionEnter被调用。
    相对于OnTriggerEnter,OnCollisionEnter传递Collision类而不是Collider.Collision类包含接触点,碰撞器速度等细节。如果在函数中不使用CollisionInfo,省略collisionInfo参数以避免不必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。


    function OnCollisionEnter(collision:Collision)

    {
        //调试绘制所有的接触点和法线
        for(var contact:ContacePoint in collision.contacts)

        {
             Debug.DrawRay(contact.point,contact.normal,color.white);
        }
        //如果碰撞物体有较大的冲击就播放声音
        if(collision.relativeVelocity.magnitude.2)
        Audio.Play();
     }
     //一枚手榴弹
     //在击中一个表面时初始化一个爆炸预设
     //然后销毁它
     var exploionPrefab:Transform;
     function OnCollisionEnter(collision:Collision)

    {
      //旋转这个物体使y轴面向沿着表面法线的方向
        var contact=collision.contact[0];
        var rot=Quaternion.FromToRotation(Vector3.up,contact.normal);
        var pos=contact.point;
        Instantiate(exploionPrefab,pos,rot);
        Destroy(gameObject);
     }


    ◆function OnCollisionExit(collisionInfo:Collision):void


    描述:当这个碰撞器/刚体停止触碰另一个刚体/碰撞器时OnCollisionExit被调用。
    相当于OnTriggerExit,OnCollisionExit传递Collision类而不是Collider.Collision类包含接触
    点,碰撞速度等细节。如果在函数中不使用collisionInfo,省略collisionInfo参数以避免不必要的计算,注意如果碰撞器附加了一个非动力学刚体,也只发关碰撞事件。
    function OnCollisionExit(collisionInfo:Collision)

    {
        print(“No longer in contact with”+collisionInfo.transform.name);
    }


    ◆function OnCollisionStay(collisionInfo:Collision):void


    描述:对于每个与刚体/碰撞器相触碰的碰撞器/刚体,OnCollisionStay将在每一帧中被调用。
    相当于OnTriggerStay,OnCollisionStay传递Collision类而不是Collider.Collision类包含接
    触点,碰撞速度等细节。如果在函数中不使用collisionInfo,省略collisionInfo参数以避免
    不必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
     function OnCollisionStay(collisionInfo:Collision)

    {
        //调试绘制所有的接触点和法线
         for(var contact:ContactPoint in collision.contacts)

         {
             Debug.DrawRay(contact.point,contact.normal,color.white);
         }
    }


    ◆function OnTriggerEnter(other:Collider):void


    描述:当这个Collider other进入trigger时OnTriggerEnter被调用。
    这个消息被发送到这个触发器碰撞器和接触到触发器的刚体(或者是碰撞器如果没有刚体)。注意如果碰撞器附加了一个

    刚体,也只发送触发器事件。
    //销毁所有进入该触发器的物体
     function OnTriggerEnter(other:Collider)

    {
         Destroy(other.gameObject);
    }


    ◆function OnTriggerExit(other:Collider):void


    描述:当这个Collider other停止触碰trigger时OnTriggerExit被调用。
     这个消息被发送到触发器和拉触到这个触发器的碰撞器。注意如果碰撞器附加了一个
    刚体,也只发送触发器事件。
     销毁所有离开该触发器的物体
     function OnTriggerExit(other:Collider)

     {
         Destroy(other.gameObject);
     }


    ◆function OnTriggerStay(other:collider):void


    描述:对于每个Collider other,当它触碰到trigger 时,OnTriggerStay会在每一帧中都被调用。
    这个消息被发送到触发器和接触到这个触发器的碰撞器。注意如果碰撞器附加了一个刚体,也只发送触发器事件。
    //对所进入这个触发器的刚体使用一个向上的力
    function OnTriggerStay(other:Collider)

    {
          if(other.atachedRigidbody)

          {
              other.attachedRigidbody.AddForce(Vector3.up*10);
          }
    }


    继承的成员
    继承的变量


    transform附加到这个GameObject的Transform(如果没有为null)。
    rigidbody附加到这个GameObject的Rigidbody(如果没有为null)。
    camera 附加到这个GameObject的Camera(如果没有为null)。
    light  附加到这个GameObject的Light(如果没有为null)。
    animation附加到这个GameObject的Animation(如果没有为null)。
    constantForce附加到这个GameObject的ConstantForce(如果没有为null)。
    Renderer 附加到这个GameObject的Renderer(如果没有为null)。
    guiText 附加到这个GameObject的GUIText(如果没有为null)。
    networkView附加到这个GameObject的NetworkView(如果没有为null)。
    Collider 附加到这个GameObject的Collider(如果没有为null)。
    hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
    particleEmitter  附加到这个GameObject的ParticleEmitter(如果没有为null)。
    gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
    tag  这个游戏的标签。
    name 对象的名称。
    hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
    继承的函数
    GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
                          回null。
    GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
    GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
     
    GetComponets返回Gameobject所有type类型的组件。
    CompareTag 这游戏物体被标签为tag?
    SendMessageUpwards  在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
    SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
    methodName方法。
    BoradcastMessage  在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
    GetInstanceID            返回该物体的实例id。
    继承的类函数
    Operator bool 这个物体存在吗?
    Instatiate  克隆original物体并返回这个克隆。
    Destroy  移除一个游戏物体,组件或资源。
    DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
    FindObjectsOfType返回所有类型为type的激活物体。
    FindObjectOfType返回第一个类型为type的激活物体。
    Operator== 比较两个物体是否相同。
    Operator!= 比较两个物体是否不相同。
    DontDestroyOnLoad  加载新场景时确保物体target不被自动销毁。

  • 相关阅读:
    不负时光,不负自己
    理解无偏估计(unbiased estimation)
    Latex Error:‘acmart.cls’ not found 解决方案:
    Dark theme for Texstudio
    马尔可夫毯(Markov Blanket)
    时间复杂度和空间复杂度的简单讲解
    应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测
    ElasticSearch集群状态查看命令大全
    ElasticSearch API 之 UPDATE
    ElasticSearch API 之 DELETE
  • 原文地址:https://www.cnblogs.com/123ing/p/3912093.html
Copyright © 2011-2022 走看看