多语言展示
当前在线:368今日阅读:84今日分享:32

Unity 如何判断物体是否在摄像机视野内或外

Unity 如何判断物体是否在摄像机视野内外。有时候在游戏开发中,需要判断某些物体是否在摄像机视野内或视野外,以便进行一些操作比如,在视野里就显示,在外就隐藏,以节约资源开销,本节介绍如何判断物体是否在摄像机视野内或外的简单案例,具体如下
工具/原料
1

Unity

2

OnBecameVisible

3

OnBecameInvisible

一、基本概念
1

OnBecameVisible():1)DescriptionOnBecameVisible is called when the renderer became visible by any camera.This message is sent to all scripts attached to the renderer. OnBecameVisible and OnBecameInvisible is useful to avoid computations that are only necessary when the object is visible.2)Exampleusing UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour {    void OnBecameVisible() {        enabled = true;    } }

2

OnBecameInvisible():1)DescriptionOnBecameInvisible is called when the renderer is no longer visible by any camera.This message is sent to all scripts attached to the renderer. OnBecameVisible and OnBecameInvisible is useful to avoid computations that are only necessary when the object is visible.2)Exampleusing UnityEngine; using System.Collections;public class ExampleClass : MonoBehaviour {    void OnBecameInvisible() {        enabled = false;    } }

二、如何判断物体是否在摄像机视野内或外
1

打开Unity,新建一个空工程,具体如下图

2

在场景中,新建一个“Cube”,具体如下图

3

在工程中,新建一个脚本,脚本可以命名为“VisibleOrInvisible”,然后选中脚本,双击脚本或者右键“Open C# Project”打开脚本,具体如下图

4

在打开的“VisibleOrInvisible”脚本上编写代码,首先在Update函数里面获取水平方向键输入,以控制“Cube”水平移动,在水平上自由移出移入摄像机视野,然后调用OnBecameVisible函数,当“Cube”在摄像机视野里触发打印操作(这里仅做打印输出,具体可以根据自己需要编写代码),调用OnBecameInvisible函数,当“Cube”在摄像机视野外触发另一打印操作,具体代码及代码说明如下图

5

“VisibleOrInvisible ”脚本具体内容如下:using UnityEngine;public class VisibleOrInvisible : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () {        float h = Input.GetAxis('Horizontal');        this.transform.Translate(new Vector3(h * 5* Time.deltaTime, 0, 0)); }    private void OnBecameVisible()    {        print('摄像机视野内');    }    private void OnBecameInvisible()    {        print('在摄像机视野外');    }}

6

脚本编译正确后,回到unity界面,把“VisibleOrInvisible ”脚本赋给场景中的“Cube”,具体如下图

7

运行场景,即可看到控制台Console上已经打印“摄像机视野内”,因为此时“Cube”可见,当按下水平方向键把“Cube”移到屏幕外不可见时,则看到控制台Console上已经打印“在摄像机视野外”,具体如下图

8

到此,《Unity 如何判断物体是否在摄像机视野内或外》讲解结束,谢谢

注意事项

若帮到您,还请帮忙投票以帮助到更多的人;若有疑问,请留言

推荐信息