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


    创建一个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课程

  • 相关阅读:
    虚拟机简介
    关于JavaScript的那些话
    关于Python的那些话
    JavaScript教程大纲
    一个resin启动bug的解决
    Python教程大纲
    zinnia项目功能分析
    CDN公共资源
    Django Web项目部署参考
    Django Web项目代码规范参考
  • 原文地址:https://www.cnblogs.com/darrenji/p/4597384.html
Copyright © 2020-2023  润新知