5.事件响应函数(二)

1、OnRenderObject

  该函数可以用来渲染你自己的物体,用Graphics.DrawMesh或者其他函数。这个函数类似于OnPostRender,除非OnRenderObject被其他物体用脚本函数调用,否则它是否附于相机都没有关系。

    public Mesh mainMesh;
    public Mesh miniMapMesh;
    void OnRenderObject()
    {
        if (Camera.current.name == "miniMapMesh")
            Graphics.DrawMeshNow(miniMapMesh, transform.position, transform.rotation);
        else
            Graphics.DrawMeshNow(mainMesh, transform.position, transform.rotation);
    }

 

2、OnWillRenderObject

  如果对象是可见的,则每个摄像机都会调用他

    public Renderer rend;
    void Start()
    {
        rend = GetComponent<Renderer>();
    }
    void OnWillRenderObject()
    {
        if (Camera.current.name == "MiniMapcam")
            rend.material.color = Color.red;
        else
            rend.material.color = Color.yellow;
    }

 

3、OnGUI

  渲染和处理GUI事件时调用。

    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 150, 100), "I am a button"))
            print("你点击了这个按钮");
    }

4、OnRenderImage

  当完成所有渲染图片后被调用,用来渲染图片后期效果。

    public Material mat;
    void OnRenderImage(RenderTexture src,RenderTexture dest)
    {
        //复制纹理给目标,应用到材质
        Graphics.Blit(src, dest, mat);
    }

 5、OnDrawGizmosSelected

  物体被选中时调用绘制gizmos(画一个半球)

    public float explosionRadius = 5.0f;

    void OnDrawGizmosSelected()
    {
        // 选中时显示爆炸半径
        Gizmos.color = new Color(1, 1, 0, 0.75F);
        Gizmos.DrawSphere(transform.position, explosionRadius);
    }

 

 

6、OnDrawGizmos

  和OnDrawGizmosSelected的区别是,脚本赋给谁则OnDrawGizmos在哪个物体上绘制,无法选择其他对象绘制

    public float explosionRadius = 5.0f;

    void OnDrawGizmos()
    {
        // 选中时显示爆炸半径
        Gizmos.color = Color.red;
        Gizmos.DrawSphere(transform.position, explosionRadius);
    }

 

7、OnApplicationPause

  当游戏暂停的时候发送给所有的游戏对象

    bool isPaused = false;
    void OnGUI()
    {
        if (isPaused)
            GUI.Label(new Rect(100, 100, 100, 30), "Game Paused");
    }
    //当玩家获得或失去焦点时
    void OnApplicationFocus(bool hasFocus)
    {
        isPaused = !hasFocus;
    }

    void OnApplicationPause(bool pauseStatus)
    {
        isPaused = pauseStatus;
    }

 

8、OnApplicationFocus

  当玩家获得或失去焦点时发送给所有的游戏对象

9、OnApplicationQuit

  在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。

    void OnApplicationQuit()
    {
        Debug.Log("Application ending after" + Time.deltaTime + "seconds");
    }

 

10、OnPlayerConnected

  当一个新玩家成功连接时在服务器上被调用。

    private int playerCount = 0;
    void OnPlayerConnected(NetworkPlayer player)
    {
        Debug.Log("Player" + playerCount + "Connected from" + player.ipAddress + ":" + player.port);
    }

 

posted @ 2017-09-22 10:13  LiuChangwei  阅读(468)  评论(0编辑  收藏  举报