WangShuXian6 / blog

FE-BLOG
https://wangshuxian6.github.io/blog/
MIT License
45 stars 10 forks source link

Unity #161

Open WangShuXian6 opened 1 year ago

WangShuXian6 commented 1 year ago

Unity

Unity 是一个专业的游戏引擎,它用于创建针对不同平台的视频游戏。 https://unity.cn/

微信小游戏特供版 https://github.com/wechat-miniprogram/minigame-unity-webgl-transform https://unity.cn/instantgame/docs/WechatMinigame/InstallUnity

先下载Hub,从Hub中选择本地已安装的Unity安装文件夹,或从Hub安装其他版本

https://unity.cn/plasticscm PlasticSCM (Unity项目版本控制系统) 代码资源托管、灵活的项目版本控制、高速的成员协作、现在您的团队将对此举重若轻。立即领取Unity解决方案! Plastic技术交流群(QQ:825450743)

WangShuXian6 commented 1 year ago

Unity

优缺点

优势

提供了非常高效的可视化工作流和多维度的跨平台支持

Unity 使用模块化组件系统构造游戏对象。 在一个组件系统中,“组件”是一个混合搭配功能的包,对象由一系列组件构建,而不是由层级严格的类构建。 换句话说,组件系统是和面向对象编程不同的方法(它更灵活),游戏对象是通过组合的方式而不是继承的方式构建的。 图 1-1 演示了继承和组件系统的对比。 image

在组件系统中,物体存在于一个扁平的层级结构中,不同的物体有不同的组件集合,而不像继承结构,不同物体处于树的完全不同的分支中。 这种设计加快原型的开发,因为当物体改变时,可以快速混合搭配不同组件而不必重构继承链。

当没有组件系统时,可以编写代码实现自定义的组件系统,但是 Unity 已经有一个健壮的组件系统,这个系统甚至与可视化编辑器无缝地集成在一起。 不仅能通过代码维护组件,还能使用可视化编辑器附加和移除组件。另外,可以通过组合构建对象, 也可以在代码中选择使用继承,包括所有基于继承的最佳设计模式

缺点

混合使用可视化编辑器和复杂的代码,尽管和 Unity的组件系统能高效地组合在一起,但它也不简单。在复杂场景中,你会搞不清楚场景中的哪个物体附加了指定组件。Unity 提供了搜索功能用于查找附加的脚本,但该搜索是很粗糙的;有时你还会遇到一些情况,为了找出脚本链接,需要手动检查场景中的物体。 这些情况虽然不会经常出现,但是一旦出现,会令人沮丧。

第二个缺点会让有经验的编程人员吃惊且失望,即 Unity 不支持链接外部代码库。 需要的库必须手动复制到每个使用它们的项目中,而不是引用一个中心共享的位置。 对类库缺少中心位置,在多个项目中共享类库就会变得笨拙。这个缺点能通过巧妙使用版本控制系统来绕开,但 Unity 不支持外部代码库的使用

必须使用预设(prefab)。预设是 Unity 特有的一个概念, 预设是可视化定义交互对象的一种灵活方式。预设很强大,只属于 Unity(它和 Unity 的组件系统绑定在一起),但预设的编辑流程却十分粗糙。预设极其有用,且作为 Unity 的主要部分进行工作

使用 Unity

打开示例模板 image image

Unity 中的界面分为不同的部分:Scene 标签、Game 标签、工具栏、Hierarchy 标签、Inspector 标签、Projector 标签和 Console 标签。每个部分都有不同的用途,它们在构建游戏的生命周期中都很重要:

● 可以在 Project 标签中浏览所有文件。 ● 使用 Scene 标签,可以在浏览 3D 场景的同时将对象放置进去工具栏中的控件用于处理场景。 ● 可以在 Hierarchy 标签中拖放对象的关系。 ● Inspector 列出了所选对象的信息,包括链接的代码。 ● 可以在 Game 视图中测试游戏,并在 Console 标签中查看错误输出。

这是 Unity 中的默认布局,所有不同的视图都有标签,而且可以移动它们或修改它们的尺寸,将其停靠在屏幕中不同的位置。后面将介绍如何自定义布局,不过现在默认布局是理解所有视图用途的最佳方式。

Scene 视图、Game 视图和工具栏

界面中最突出的部分是中间的 Scene 视图。这是观察游戏世界和移动对象的场所。 网格对象也会出现在场景中(后面给出它的定义)。也能在场景中看到其他对象,它们由不同的图标和彩色线条表示:摄像机、灯光、声源、碰撞区域等。 注意在这个视图看到的东西和运行游戏时看到的不一样。可以在 Scene 视图中到处浏览,而不会受到Game 视图的约束

网格对象是 3D 空间中的可视对象。3D 中的可视对象是由很多连接的线和图形构成的,因此世界是由网格构成的。

Game 视图不是屏幕中独立的部分,而是另一个标签,它位于 Scene 视图的右侧(在视图左上角可以找到该标签)。在界面上的有些地方可能有多个这样的标签,如果单击一个不同的标签,视图会被新激活的标签替换。当游戏运行时,这个视图会变成 Game 视图。在每次运行游戏时不需要手动切换标签,因为当游戏启动时,视图会自动切换为 Game 视图。

提示: 运行游戏时,可以切换回 Scene 视图,这样就能在运行的场景中检查对象。运行游戏时,这个功能非常适合于查看什么对象在执行什么操作,它是一个很有用的调试工具,而这正是大多数引擎所不具备的。

所谓运行游戏,就是简单地单击 Scene 视图上方的 Play 按钮。界面的顶部是工具栏,Play 按钮正位于中间

工具栏左边的按钮用于场景导航和变换对象——如何浏览场景和移动对象 工具栏的右侧是布局和图层的下拉菜单。 Unity 界面的布局很灵活,Layouts 菜单允许在布局之间来回切换。Layers 菜单具有高级功能 image