創建一個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 initializationvoid Start () {}// Update is called once per framevoid Update () {}}
把"EnableComponent"腳本拖動到"Hierarchy"窗口中的"Cube"上,此時在其對應的"Inpector"窗口中的腳本組件中,多了一個"M Mesh"屬性。
把"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 initializationvoid Start () {}// Update is called once per framevoid 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 initializationvoid Start () {//gameObject表示當前物體gameObject.SetActive(false);}// Update is called once per framevoid 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 initializationvoid Start () {}// Update is called once per framevoid Update () {}}
選中"Hierarchy"窗口中"Cube",把原先的腳本組件刪除,再把"DisableDestroy"的腳本拖動其上。
保存,運行游戲,在運行過程中,把"Disable Destroy(Script)"的勾選去掉,停止運行,控制台顯示如下:
參考資料:極客學院Unity3D課程