最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
unity隐藏组件
今天我们来探讨一下Unity中隐藏组件相关的内容。下面主要介绍组件隐藏和显示的方法,供大家学习参考。
Unity 3D中物体显示和隐藏的方法
1. gameObject.renderer.enabled
gameObject.renderer.enabled 用于控制一个物体是否在屏幕上渲染或显示。当将其设置为 false 时,物体就相当于隐身了,但实际上该物体仍然存在于场景中,并且其碰撞体也依然有效。示例代码如下:
gameObject.renderer.enabled = false; // 隐藏物体渲染
2. GameObject.Destroy()
GameObject.Destroy() 表示移除物体或物体上的组件,也就是销毁该物体。不过需要注意的是,实际上该物体的内存并不会立即释放,而是通常在下下个场景中才会释放内存资源。例如,在A场景中调用了 Destroy 方法,一般要到C场景中该物体的内存才会真正被释放。以下是示例代码:
GameObject.Destroy(gameObject); // 销毁物体
3. gameObject.active
gameObject.active 用于控制物体是否在场景中停用。当 gameObject.active = false 时,在场景中使用 Find 方法将无法找到该物体。如果该物体有子物体,需要使用 SetActiveRecursively(false) 来递归地控制是否在场景中停用该物体。示例代码如下:
gameObject.SetActive(false); // 停用物体
// 如果有子物体,递归停用
gameObject.SetActiveRecursively(false);
示例代码
下面是一个完整的示例代码,展示了如何通过按键来控制物体的显示和隐藏。
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour
{
GameObject m_obj;
// Use this for initialization
void Start ()
{
m_obj = GameObject.Find("box");
}
// Update is called once per frame
void Update ()
{
// 可在此处添加其他逻辑
}
void OnGUI()
{
if (Input.GetKeyDown(KeyCode.W))
{
m_obj.SetActive(true); // 显示物体
}
if (Input.GetKeyDown(KeyCode.A))
{
m_obj.SetActive(false); // 隐藏物体
}
}
}
在这个示例中,脚本会在场景开始时查找名为 “box” 的物体,然后在 OnGUI 方法中监听按键事件。当按下 “W” 键时,物体显示;按下 “A” 键时,物体隐藏。