Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件 您所在的位置:网站首页 unity组件隐藏 Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件

Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件

2023-04-13 03:41| 来源: 网络整理| 查看: 265

 

创建一个Unity项目。

 

在"Project"窗口中,在"Asserts"中,添加"_MyScene"文件夹。

 

点击"File"中的"Save Scene",给Scene命名,并保存到"_MyScene"文件夹。

 

创建一个类型为"Plane"的GameObject,并调整其大小。

 

创建一个类型为"Cube"的GameObject,并适当调整大小。

 

使用脚本控制物体组件的Enable/Disable

 

选中"Hierarchy"窗口下的"Cube",如果把其对应的"Inspector"窗口中"Meshe Render"的勾选去掉,将会在"Scene"窗口中看到一个空心的Cube。也就是说,组件可以通过显式的方式被声明为Enable或Disable。

 

还可以通过脚本的方式控制组件的可见性。

 

在"Project"窗口中,在"Asserts"中,添加"_Scripts"文件夹。

 

在"_Scripts"文件夹下创建一个名称为"EnableComponent"的脚本,双击,在Visual Studio中打开并编辑。

 

using UnityEngine; using System.Collections; public class EnableComponent : MonoBehaviour { public MeshRenderer mMesh; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }

 

把"EnableComponent"脚本拖动到"Hierarchy"窗口中的"Cube"上,此时在其对应的"Inpector"窗口中的脚本组件中,多了一个"M Mesh"属性。

24

 

把"Hierarchy"窗口的"Cube"拖动到"M Mesh"属性值框中,Unity会自动识别Cube上的MeshRenderer,使其成为"M Mesh"的属性值。

 

现在,我们想当按下键盘上的空格键,让Cube成为空心,即设置Cube脚本组件的"M Mesh"属性值。修改"EnableComponent"脚本如下:

 

using UnityEngine; using System.Collections; public class EnableComponent : MonoBehaviour { public MeshRenderer mMesh; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.Space)) { mMesh.enabled = false; } } }

 

保存,并运行游戏。

 

当按下键盘中的空格键,在"Game"窗口中的Cube自动消失。

 

如果想通过键盘上的空格键来切换Cube的可见/不可见状态,修改"EnableComponent"脚本如下:

保存,并运行游戏。

 

当每次按下键盘中的空格键,在"Game"窗口中的Cube要么可见,要么不可见。

 

使用脚本控制物体的Active/Inactive

 

再创建一个类型为"Sphere"的球体,适当调整位置和大小。

 

在"_Scripts"文件夹下创建一个名称为"SetActive"的脚本,双击,在Visual Studio中打开并编辑。

 

using UnityEngine; using System.Collections; public class SetActive : MonoBehaviour { // Use this for initialization void Start () { //gameObject表示当前物体 gameObject.SetActive(false); } // Update is called once per frame void Update () { } }

 

把"SetActive"脚本拖动到"Hierarchy"窗口的"Sphere"上。

 

保存,运行游戏,球体不会出现。

 

当然,物体的可见性最直接的做法是在"Inspector"窗口中显式设置。

 

OnEnable, OnDisable与OnDestry

 

这是3个响应事件函数。

OnEnable:当对象变为可用或激活状态时被调调用。OnDisable:当对象变为不可用或非激活状态时被调用。OnDestroy:当MonoBehaviour将被销毁时调用。注意,是脚本被销毁时调用,而不是物体被销毁时被调用。

 

创建一个名称为"DisableDestroy"的脚本,编写如下:

 

using UnityEngine; using System.Collections; public class DisableDestroy : MonoBehaviour { void OnEnable() { Debug.Log("script was enabled"); } void OnDisable() { Debug.Log("script was disable"); } void OnDestroy() { Debug.Log("script was destroyed"); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }

 

选中"Hierarchy"窗口中"Cube",把原先的脚本组件删除,再把"DisableDestroy"的脚本拖动其上。

 

保存,运行游戏,在运行过程中,把"Disable Destroy(Script)"的勾选去掉,停止运行,控制台显示如下:

25

参考资料:极客学院Unity3D课程



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有