Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记

时间:2024-01-10 18:34:14

遇到的问题:

1 第11节Scripting the pressure plates中需要获取子物体的Animator组件,教程使用的语句如下:

”SwitchAnim = GetComponentInChildren<Animator>();“

经测试,无法获取,产生了 “Animator has not been initialized”的警告

解决方法:直接查询子物体,然后在获取子物体的组件

“SwitchAnim = gameObject.transform.GetChild(0).GetComponent<Animator>();”

原因:不明确,可能操作顺序上有问题,也有可能是版本问题,并且官方文档也保留着该函数的说明。教程是今年的,应该使用的也是Unity3D 4.x的版本。

收获:解决方法也是极好的,能有针对性的查询指定的子物体,避免不必要的开销和失误。

2 定义了GameObject对象的数组,如果没有元素个数需要在GUI中设定,并且如果需要指定特定GameObject的时候,需要在操作界面中拖拽绑定。截图如下:

Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记

3 关于Unity中获取多个GameObject的顺序,应该是按创建时间,最后创建的在第一个,以此类推,我的代码如下

Switches = GameObject.FindGameObjectsWithTag("SwitchSet");
Switch_A = Switches[].GetComponent<Switch>();
Switch_B = Switches[].GetComponent<Switch>();
Switch_C = Switches[].GetComponent<Switch>();
Switch_D= Switches[].GetComponent<Switch>();

这里的Switch即对应教程中使用的plate。获取后的顺序如下图:
Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记

总结:

整部教程的主要内容其实就是如下几点:

1 构建动画,在脚本中获取带有动画的GameObject,然后通过设置Animator的一个状态转换的布尔变量来启动动画。

2 在运行时修改物体的子父级关系,根据需要获取transform节点下的position或者rotation,甚至是scale;最后需要将其parent的属性修改成为父物体的transform节点;这个有点像maya里的子父级关系调整,都是在transform节点下进行操作的(大部分三维场景管理器基本都是使用这个概念的,诸如OGRE,Maya等)

3 解密类游戏的基本游戏逻辑结构,需要达到满足的若干个条件,然后才会继续。。。