Unity3D - MonoBehaviour & GameObject

Unity中所有使用C#编写的脚本都应该继承自MonoBehaviour

MoonBehaviour常见的必然事件(在特定条件下被调用):

名称触发条件用途
Awake脚本实例被创建时调用用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数
StartUpdate函数第一次运行前调用用于游戏对象的初始化
Update每帧调用一次用于更新游戏场景和状态(和物理状态有关的更新应该放在FixedUpdate中)
FixedUpdate每个固定物理时间间隔(Physics Time Step)调用一次用于物理状态更新
LateUpdate每帧调用一次(在Update调用之后)用于更新游戏场景和状态,和相机有关的操作一般放这里

MoonBehaviour特定事件的响应函数(模型碰撞、鼠标移动)

事件响应函数说明
OnMouseEnter鼠标移入GUI或者碰撞物体时调用
OnMouseOver鼠标停留在GUI控件或碰撞物体时调用
OnMouseExit鼠标退出GUI控件或碰撞物体时调用
OnMouseDown鼠标在GUI控件或物体上按下时调用
OnMouseUp鼠标按键释放时调用
OnTriggerEnter当其他碰撞体进入触发器时调用
OnTriggerExit当其他碰撞体离开触发器时调用
OnTriggerStay当其他物体停留在触发器时调用
OnCollisionEnter当碰撞体或者刚体与其他碰撞体或者刚体接触时调用
OnCollisionExit当碰撞体或刚体与其他碰撞体或刚体停止接触时调用
OnCollisionStay当碰撞体或刚体与其他碰撞体或刚体保持接触时调用
OnControllerColliderHit当控制器移动时与碰撞体发生碰撞时调用
OnBecameVisible对于任意一个相机可见时调用
OnBecameInvisble对于任意一个相机不可见时调用
OnEnable对象启用或者激活时调用
OnDisable对象禁用或者取消激活时调用
OnDestroy脚本销毁时调用
OnGUI渲染GUI和处理GUI消息时调用

MoonBehaviour 常用组件及变量

变量列表:

组件名称变量名组件作用
Transformtransform设置游戏对象的位置、旋转、缩放
Rigidbodyrigidbody设置物理引擎的刚体属性
Rendererrenderer渲染物体模型
Lightlight设置灯光属性
Cameracamera设置相机属性
Collidercollider设置碰撞体属性
Animationanimation设置动画属性
Audioaudio设置声音属性

函数列表

函数名作用
GetComponent得到组件
GetComponents得到组件列表
GetComponentInChildren得到对象或者对象子物体上的组件
GetComponentsInChindren得到对象或者对象子物体上的组件列表

需要注意的是,调用GetComponent()函数比较耗时,因此应该尽量避免在Update中调用这些组件获取的函数,而是应该在初始化是把组件的引用保存在变量中。

GameObject访问游戏对象

可以用如下几种方式来访问游戏对象:

通过名称查找GameObject.Find() 如果场景中存在指定名称的游戏对象,那么返回该对象的引用,否则返回空值null。

GameObject player;

void Start() {
    player = GameObject.Find("MainHero");
}

通过标签来查找GameObject.FindWithTag,如果场景中存在指定标签的游戏对象,那么返回该对象的引用否则返回空值null,如果有多个返回第一个。还可以使用GameObject.FindGameObjectsWithTagg()来获取游戏对象数组。

GameObject player;
GameObject[] enemies;

void Start() {
  player = GameObject.FindWithTag("player");
  enemies = GameObject.FindGameObjectsWithTag("enemy");
}

请注意:以上几个方法都比较耗时,应该避免在Update中调用这些获取Compoent的函数,而是应该在初始化时把组件的引用保存在变量中。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您提供Unity 3D游戏-消消乐(三消类)教程和源码。 首先,您需要安装Unity 3D引擎,然后创建一个新的项目。接下来,您可以按照以下步骤构建您的游戏: 1. 创建一个3D场景并添加相机和灯光。 2. 创建一个游戏板,可以使用网格和材质来创建。 3. 创建不同的游戏块,可以使用3D模型或2D图片来创建。 4. 实现游戏规则:当三个或三个以上相同的块相邻时,它们将被消除。 5. 实现游戏的分数系统和难度级别。 这是一个基本的游戏框架,您可以根据需要添加其他功能和元素。 此外,以下是一个基于Unity 3D的消消乐游戏的源代码示例,您可以将其作为参考: ```csharp using UnityEngine; using System.Collections; public class Block : MonoBehaviour { public enum BlockType { Red, Green, Blue, Yellow } public BlockType blockType; private bool isClicked = false; void OnMouseDown() { if (!isClicked) { isClicked = true; StartCoroutine(CheckMatches()); } } IEnumerator CheckMatches() { yield return new WaitForSeconds(0.1f); GameObject[] blocks = GameObject.FindGameObjectsWithTag("Block"); ArrayList matches = new ArrayList(); foreach (GameObject block in blocks) { if (block != gameObject && block.GetComponent<Block>().blockType == blockType) { float distance = Vector3.Distance(transform.position, block.transform.position); if (distance < 1.1f) { matches.Add(block); } } } if (matches.Count > 0) { matches.Add(gameObject); foreach (GameObject block in matches) { Destroy(block); } } else { isClicked = false; } } } ``` 此代码演示了如何检测匹配块并将其销毁。当用户单击块时,它将检查所有相邻的块,并将其添加到一个数组中。如果匹配块的数量大于0,则将它们全部销毁。否则,单击状态将被重置。 希望这可以帮助您开始创建自己的消消乐游戏!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值