fwalker 发表于 2022-11-6 20:56

Unity编码篇—获取组件,显示隐藏和销毁

我们想要访问游戏物体的组件 , 首先要找到这个游戏物体 , 然后才能找到这个物体身上的某个组件去改变它. 我们使用 GetComponent 方法获取组件 :
using UnityEngine;
public class Test : MonoBehaviour
{
// 定义一个cube对象
private Transform m_Cube;
private void Start()
{
// 获取这个cube身上的 Transform 组件
m_Cube = GameObject.Find("Cube").GetComponent<Transform>();
}
private void Update()
{
// cube 绕着y轴旋转
m_Cube.Rotate(Vector3.up * Time.deltaTime * 30f);
// 如果按下鼠标左键
if (Input.GetMouseButtonDown(0))
{
// cube 的颜色变蓝
m_Cube.GetComponent<MeshRenderer>().material.color = Color.cyan;
}
// 如果按下鼠标右键
if (Input.GetMouseButtonDown(1))
{
// cube变大一倍
m_Cube.localScale = Vector3.one * 2f;
}
// 如果按下鼠标中键
if (Input.GetMouseButtonDown(2))
{
// 将cube隐藏
m_Cube.gameObject.SetActive(false);
}
// 如果按下键盘 D 键
if (Input.GetKeyDown(KeyCode.D))
{
// 3s 后销毁这个 cube (这里的gameObject指的就是这个cube本身)
Destroy(gameObject, 3f);
}
}
}
代码已写好注释 , 可以对比注释看
我们在unity新建一个cube , 给这个cube挂上上面的脚本 , 然后运行 unity
运行效果 :
cube运行状态下一直在绕Y轴旋转 ;
按下鼠标左键 cube变蓝 ;
按下鼠标右键 cube变大1倍 ;
这里我们先在 Start 方法里获取了这个cube的 Transform 组件 , 而 Transform 组件是场景里每个游戏对象都有的组件 , 它控制物体的 位置 ,旋转,大小
我们获取到了cube身上的 Tranform 组件 , 我们就可以改变这个cube的位置,大小,旋转等属性 .


请输入图片描述
Transform组件
同理 ,我们也可以获取cube的 Box Collider 组件 , 将cube的 Is Trigger 勾选上 , 这个留给大家做练习 , 如果不会的可以留言 , 我在为大家写一下 .
现在为大家介绍设置游戏物体的显示和隐藏 SetActive() :
SetActive方法里面需要传一个 bool 值 :
true : 表示显示物体 ;
false : 表示隐藏物体 ;
运行效果 :
当我们按下鼠标中键的话 , cube会消失 ;
最后为大家介绍 Destroy 方法 :
销毁游戏对象及其组件 , 当我们不需要这个游戏物体了 , 我们就需要将这个物体销毁 .
格式 :
Destroy(GameObject) : 销毁某个物体(要销毁的游戏对象).
Destroy(GameObject , time) : 延迟一段时间后 , 销毁这个物体 (第一个参数是要销毁的游戏对象 , 第二个参数是延迟的时间).
运行效果 :
当按下键盘 D 键的时候 , 3s后 cube被销毁 。
页: [1]
查看完整版本: Unity编码篇—获取组件,显示隐藏和销毁