GameObject知识点

本文详细介绍了Unity中GameObject的成员变量和静态方法,包括如何创建、查找、实例化、删除对象,以及添加和管理脚本。讲解了通过对象名、Tag进行查找,以及各种删除方法的使用,如延迟删除和立即删除。此外,还讨论了对象的激活与失活、标签比较以及发送消息等交互机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、GameObject中的成员变量

// 名字
this.gameObject.name

// 是否激活
this.gameObject.activeSelf

// 是否为静态
this.gameObject.isStatic

// 层级
this.gameObject.layer(返回int类型,层级前面的标号)

// 标签
this.gameObject.tag(返回string类型)

// transform
this.transform,通过Mono去得到的依附对象的GameObject的位置信息
与this.gameObject.transform得到的相同

2、GameObject中的静态方法

// 创建自带几何体,参数为几何体类型(PrimitiveType枚举),返回一个GameObject对象,只要得到一个GameObject对象,就可以得到它身上挂载的任何脚本信息,通过obj.GetComponent方法得到

GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube)
obj.name = "****";
obj.transform.position = new Vector3(*,*,*);

// 查找对象相关的知识

// PS:只能找到被激活的对象

(1)查找单个对象

// 如果场景中存在多个满足条件的对象,无法确定找到的是谁

// 通过对象名查找,若没有找到返回null

// 效率低下,因为会在场景中的所有对象去查找

GameObject obj = GameObject.Find("对象名“)

// 通过tag查找

GameObject obj = GameObject.FindWithTag("标签
### 大学生 Unity 面试知识点总结 #### 一、基础知识 对于初次接触Unity的开发者来说,掌握其基本概念至关重要。这包括但不限于场景管理、对象操作、脚本编写等基础功能。 - **Transform组件**:用于控制GameObject的位置、旋转和缩放属性[^3]。 ```csharp // 设置物体位置 transform.position = new Vector3(0, 5, 0); ``` - **生命周期函数**:理解`Start()` 和 `Update()` 的区别及其应用场景非常重要。前者仅执行一次,在第一次帧更新前调用;后者每帧都会被触发,适合处理持续性的逻辑运算[^1]。 #### 二、C# 编程能力 作为一款基于.NET框架的游戏引擎,熟悉C#语言是必不可少的要求之一。特别是面向对象编程(OOP)的概念如类(class)、继承(inheritance)、多态(polymorphism),以及LINQ查询表达式的应用都可能成为考察重点。 - **接口实现** ```csharp public interface IInteractable { void Interact(); } public class Door : MonoBehaviour, IInteractable { public void Interact() { Debug.Log("Door opened."); } } ``` #### 三、物理系统 了解刚体(Rigidbody)的工作原理,碰撞检测(Collision Detection)机制,以及如何利用Physics API来创建真实的交互效果也是常见的考点。 - **简单碰撞响应** ```csharp void OnCollisionEnter(Collision collision){ if(collision.gameObject.tag == "Player"){ Destroy(gameObject); // 销毁当前物体 } } ``` #### 四、UI设计与事件处理 现代游戏往往离不开精美的界面支持,因此熟练运用UGUI(Universal Render Pipeline下的图形用户界面库)构建菜单、按钮等功能模块,并能有效绑定点击或其他输入动作至相应的方法上显得尤为重要。 - **Button Click Event Handling** ```csharp using UnityEngine.UI; public class ButtonHandler : MonoBehaviour{ public void OnButtonClick(){ Debug.Log("Button clicked!"); } private void Start(){ GetComponent<Button>().onClick.AddListener(OnButtonClick); } } ``` #### 五、资源管理和优化技巧 随着项目规模的增长,合理规划素材加载方式(异步/同步)、减少不必要的内存占用变得越来越重要。学习AssetBundle打包技术或是Addressable Assets System可以帮助提高性能表现并降低包体积。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值