[随便聊聊] unity一些知识点的总结
在蛮牛教育上观看了众多视频,也在其论坛学到了不少知识,特此将蛮牛教育讲师所讲的知识点进行归纳。虽不一定全面,但涵盖范围应该较广。
1. Monodevelop中中文注释的使用
在Monodevelop里,应谨慎使用中文注释。曾遇到这样的问题:添加中文注释后,本行代码输入出现错误,原本输入“_”,显示的却是空格,而删掉中文注释后就恢复正常。
2. 碰撞体的必要性
若要实现碰撞效果,必须添加碰撞体(Collider)。例如射线碰撞,使用 Physics.Raycast() 方法时,物体必须有碰撞体,否则无法发生碰撞。
3. Unity基本组成
3.1 Scene场景
Scene场景类似于Flash中的stage,用于放置各种对象,是游戏世界的载体。
3.2 GameObject(游戏对象)
GameObject可以携带各种Component(组件),每个GameObject至少带有Transform组件。所有组件都可以从顶部菜单的“Component”中找到并添加给游戏对象。
3.3 Component(组件)
组件附加在GameObject上,不同的组件能使GameObject具有不同的属性。像Transform、碰撞器、刚体、渲染器等都是常见的组件,脚本也是组件的一种。对象所表现出的行为都是由组件实现的。
4. 脚本语言
Unity支持C#、Javascript、boo三种脚本语言,其中前两者使用较为广泛,网上教程也以前两者为主,个人推荐使用C#。一般继承 MonoBehaviour 类的脚本都需要依附于场景中的对象才能被执行。
5. 用户图形界面部分(GUI)
5.1 功能概述
GUI用于制作按钮、文本显示、滚动条、下拉框等常用图形操作界面元素,使用GUISkin和GUIStyle可以自定义样式。
5.2 类型
- 系统自带GUI:Unity自身提供的基础GUI功能。
- 各类GUI插件:如NGUI、EZGUI等,能提供更丰富的功能和更便捷的开发体验。
6. 预制(Prefab)
6.1 概念
预制是程序运行时动态实例化对象的“母体”。以射击类游戏为例,子弹的生成就可以通过实例化预制的方式实现。这类似于Flash中的各种Display类,可定义其各种属性和方法,使用时直接实例化一个实例。
6.2 创建方法
在Project面板右击,选择“Create——Prefab”新建一个预制,然后将Hierarchy面板中要制成预制的对象拖到这个新建预制上即可。
7. 标签和层
7.1 标签(Tag)
标签用于辨别物体,与name类似,可使用对象的tag和name找到对应的物体,例如 GameObject.Find("Name") 和 GameObject.FindWithTag("Tag")。默认标签是“Untagged”,可以通过Inspector面板中Tag的下拉菜单选择“Add Tag”项来添加新标签。在TagManager中,点开Tags左侧的小三角,通过设置“size”来增加标签的数量,每个Element内填入新标签的名字。
7.2 层(Layer)
在使用某些功能时,可以通过层来过滤不需要运用该功能的对象,即将该功能应用到特定的层。例如相机的Culling Mask属性,通过选择特定层可以实现只显示位于被选中层的对象。层的添加也是在标签管理器中进行,Unity已经设置了8个层,不能对这8个层进行修改,可以从第9个(即User Layer 8)开始添加自定义的层。
8. 资源导入与导出
8.1 .unitypackage格式文件导入
.unitypackage格式的文件可以直接导入到Unity中。建议在打开Unity的情况下,在Project面板里右击,然后在“Import Packages”中选中要导入的资源。需要注意的是,Unity不识别中文路径,因此要导入的资源和新建的工程都不要放在中文目录下,否则可能无法正常导入或创建工程。
8.2 场景打包导出
可以把场景打包,导出为.unitypackage资源包,然后在其他项目中导入使用。操作方法是在Project面板里右击,选择“Export Package”。
8.3 其他形式资源导入
利用工程面板(Project)右键菜单中的“Import New Assets”可以导入其他形式的资源,如模型、音频、视频等,也可以直接将外部文件夹中的资源拖到Project面板中完成导入。
9. 物理引擎
Unity使用NVIDIA PhysX物理引擎,该引擎能为游戏提供真实的物理模拟效果。