ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Unity入门核心:掌握场景、组件与预制体,搞懂底层运作逻辑

Unity入门核心:掌握场景、组件与预制体,搞懂底层运作逻辑 当你第一次接触Unity迎面而来的往往是满屏的术语、拖拽不完的窗口、还有搜索栏里那几十个“Unity怎么XXX”的提问。作为一个从Unity 5时代一路踩坑走到现在的人我太了解这种感觉了。很多新手教程上来就教你怎么拖一个cube、加一个rigidbody然后告诉你“恭喜你会做游戏了”——但实际上你连场景视图和游戏视图的区别都没搞清楚更别说理解预制体和预设体到底是什么关系。所以这一篇“Unity入门一”我不打算让你急着做出一个demo。我会先把Unity最底层的那套逻辑给你讲明白它本质上是什么、你在用它的哪一部分、以及一个项目从新建到跑起来到底经历了什么。这不是一篇“速通”但看完之后你至少能理直气壮地回答别人Unity是干什么的场景、物体、组件、脚本之间是什么关系为什么别人的项目打开后那么多文件夹和文件以及最关键的——你接下来该往哪个方向学。1. Unity到底是个什么东西1.1 它不只是“做游戏的软件”很多人把Unity当成一个“做游戏的软件”这个说法不能说错但太片面了。Unity本质上是一套实时3D/2D内容创作与运行引擎它提供的核心能力是把美术资源、程序逻辑、物理规则、音频动画等零散的素材组织起来在设备上以每秒几十帧的速度实时渲染出来同时处理用户的输入和交互。换句话说Unity最值钱的不是编辑器本身而是它背后的运行时Runtime。你在编辑器里拖拽摆放的一切最终都会被打包成一串串数据和代码交给Runtime去解释执行。这也是为什么同一个项目可以一键导出到Windows、macOS、Android、iOS、WebGL甚至主机平台——因为Runtime在不同平台上都有对应实现你的“游戏逻辑”本身是跨平台统一的。理解了这一点你就能明白为什么C#是Unity的灵魂。编辑器只是给你提供了可视化的操作界面真正决定游戏行为的是附着在物体上的C#脚本。Unity官方文档里管这个叫“组件化架构”一个游戏场景里所有东西都是GameObjectGameObject本身是空的容器你往里面挂什么组件它就具备什么能力——挂Camera组件它就成了摄像机挂Rigidbody它就有了物理属性挂你写的MonoBehaviour脚本它就开始执行你的逻辑。1.2 Unity的生态和三件套现在的Unity早已不局限于游戏。你在热搜词里能看到“Unity数字孪生”、“Cesium for Unity”、“Unity微信小游戏”、“Unity串口通信”这些关键词说明它已经被广泛用于建筑可视化、智慧城市、工业仿真、医疗培训、汽车HMI等领域。为什么因为实时渲染的核心诉求是通用的你有一个三维世界你要把它显示出来还要让用户能操作它。学习Unity你实际上是在学三样东西的配合模块包含内容对应能力编辑器操作场景搭建、资源导入、预制体、动画、UI把想法可视化C#编程生命周期、组件调用、数据结构、协程、事件让世界动起来资源管线模型、贴图、音频、材质、Shader让世界好看这三块缺一不可。只学编辑器你做出来的东西是死的只学C#你连一个模型都拖不进来不懂资源管线你做的项目在别人的电脑上跑起来像上个时代的产物。后续我写进阶篇的时候会专门拆“Unity阴影问题”、“Unity打包优化”、“Unity微信小游戏”这些话题但前提是你得先把基础架构打通。2. 安装与版本选择别让环境坑了你2.1 Unity Hub和编辑器版本的关系新手最容易困惑的就是“Unity”和“Unity Hub”有什么区别。简单说Unity Hub是版本管理器Unity编辑器才是那个几十GB的开发工具。你必须先装Hub再从Hub里下载指定版本的编辑器这有点像Steam和游戏的关系。为什么Unity要把版本管得这么严因为不同项目使用的功能、包管理器依赖、C#版本支持都不同同一个编辑器版本吃遍所有项目是不现实的。尤其你以后要是接手别人的工程编辑器版本对不上打开就是一堆报错甚至直接打不开。所以建议从一开始就养成习惯用Unity Hub管理多个版本每个大项目固定一个版本不要频繁升级。现在的版本号规则是这样的Unity 2022.3 LTS中间的“2022”是年份“.3”是该年份的第3个更新周期结尾带LTS的表示长期支持版本。新手我建议直接选对应年份的LTS版本比如2021.3 LTS或2022.3 LTS。为什么不用最新版因为中间的Tech Stream版本每三个月就迭代一次功能和API变动频繁网上能找到的教程和踩坑记录往往滞后出了问题连官方issue都还没修完你不值得在这个阶段替Unity当小白鼠。2.2 安装时必选的模块和常见问题在Unity Hub里点击安装的时候会弹出模块选择界面。我给你的建议是必须勾选Visual Studio而不是VS Code虽然VS Code配好插件也能写但Unity对Visual Studio的集成最完善断点调试、自动补全、文档跳转都是开箱即用的。安装时选“Visual Studio 2022Community”装完编辑器自带对应的调试插件省去一堆配置环境变量的麻烦。根据目标平台勾选Build Support你以后要发布Android就勾Android Build Support里面还要选SDK和NDK虽然新版Unity也可以自己下载。现在不确定的话Windows平台的Build Support先勾上其他以后在Hub里随时补装。不用勾Documentation和Standard Assets文档在官网看网页版更方便Standard Assets那套老资源已经被官方逐渐移除了装了反而是负担。装好之后第一次新建项目时还会让你选择模板这里记住做2D选2DURP做3D选3DURP。URP是通用渲染管线现在新项目基本都用它性能好、支持面广。内置渲染管线Built-in在老项目中常见但除非你明确知道自己需要否则不要选它。注意安装路径不要带中文和空格包括Windows用户名也尽量不要用中文。很多莫名其妙的编译报错、资源导入失败根源就是路径里出现了非英文字符。这个坑我见过太多人踩了。3. 编辑器界面第一次打开别慌3.1 六个核心窗口的用途第一次打开Unity你会看到一整个面板。别急着乱点先把下面这几个窗口的位置和职责搞清楚因为它们从始至终贯穿你的Unity生涯窗口默认位置用途新手常见误区Hierarchy层级左侧列出当前场景中的所有物体以为它就是文件资源列表Scene场景视图中间编辑摆放物体的可视化视图把它当成游戏画面Game游戏视图中间可切换运行时的实际渲染画面运行时看不到物体就以为出错Inspector检查器右侧显示/编辑选中物体的所有组件参数不知道组件从哪来Project项目下方显示项目的所有资源文件以为它和Hierarchy是一样的Console控制台下方与Project并列输出日志、报错、警告报错时完全忽略这六个窗口之间的核心关系是Project里的资源是“静态文件”Hierarchy里的物体是“场景实例”。你在Project里有一个Cube的模型资产你可以把它拖到Hierarchy里创建多个实例——改Project里的原始资产会影响所有实例但你在场景里单独调整某一个实例的缩放不会改动原始资产。这就是引擎中“资源-实例”思想的最小体现。3.2 模态切换Scene视图和Game视图的本质区别Scene视图是“你的导演视角”Game视图是“观众的视角”。你在Scene里可以自由飞行、穿墙、从任意角度观察场景但在Game视图里只能通过摄像机看到画面。很多新手在Scene里摆放好了物体点了Play却发现Game视图里一片空白原因通常就是摄像机没对准物体或者物体被放在了摄像机视线范围之外。这个问题的本质是要理解视图工具右上角的手型、移动、旋转、缩放工具是作用于“编辑器相机”而不是“场景物体”。放一个最简单的例子你按了W切换移动工具然后在Scene视图里拖动一个Cube实际上你操作的是Cube的Transform组件的Position属性但如果你用的是Scene视图右上角的那个手型工具你移动的就是编辑器观察视角完全不改变任何物体。3.3 设置界面布局的黄金配置Unity默认布局对新手来说信息密度太低。我推荐你从Window Layout中选2 by 3然后做一点微调把Console窗口拖出来跟Scene放在一个垂直区域这样你一边操作一边就能看到日志输出不用切来切去。第二个建议把Project窗口改成One Column布局按文件夹结构而不是按资源类型排列这样管理大型项目时会清晰得多。关于界面最后提醒一件事Unity编辑器和TMPro、Shader等很多窗口是在Play运行期间也会更新的有时候游戏卡顿不是因为你的电脑不行而是编辑器在每帧都在刷新Inspector里的数值。以后你跑复杂项目时如果觉得编辑器特别卡可以点右上角的Statistics或关掉Scene视图的画面刷新这会明显改善体验。4. 第一个场景从空场景到看得见的画面4.1 新建项目后的三个基础操作我默认你已经新建了一个3DURP项目接下来我们一步步搭出第一个能“跑起来”的场景。不要问为什么做这个做完你就知道答案了。第一步在Hierarchy窗口空白处右键选择3D Object Cube。你会看到场景里出现一个立方体同时Hierarchy里多了一个“Cube”物体。注意此时Project窗口里并不会多出任何文件——因为场景里的物体是“场景数据”不是“资源文件”。第二步在Hierarchy选中Cube在Inspector里找到Transform组件把Position改为(0, 0, 0)把Scale改成(2, 1, 1)。这个操作相当于给这个物体换个位置、拉扁一点。你看所谓“3D建模”在这个阶段其实就是调整几个数字而已。第三步右键Hierarchy空白处选择Light Directional Light。因为新场景默认没有光源如果不加灯你的Cube会是一个全黑的剪影什么都看不清。加上Directional Light之后Cube立刻有了受光面——这就是为什么你看到很多Unity项目里都会有一个平行光它是模拟太阳光的没有方向性衰减只受旋转角度影响。4.2 让Cube动起来第一个组件的意义选中Cube在Inspector底部点击Add Component搜索Rigidbody回车添加。这是Unity物理系统的核心组件。它会给Cube赋予质量、速度、受重力影响等物理属性。此时你点一下Play你会发现Cube直接从场景里掉下去了——因为Rigidbody默认受重力。这个现象可能让新手崩溃但它恰恰是理解“组件驱动行为”的最佳例子。你的Cube本身并没有“自己往下掉”的代码它只是挂了一个Rigidbody组件物理引擎自动接管了它的位移计算。这也解释了为什么很多教程里角色刚体为什么会莫名其妙“飘起来”或“穿墙”——组件的物理参数对了一切都对参数不对什么都别扭。4.3 为什么“动了”之后又回到原位刚运行完Play你发现Cube位置变了但是停止Play之后它又弹回之前的位置。这个现象极其关键编辑器里的任何修改在Play模式下都只是“临时改动”停止Play后会自动还原。这不是Bug而是Unity刻意设计的安全机制——防止你在测试时改坏了场景数据。但这也带来了一个问题如果我想在游戏里改变物体运行中保存下来怎么办答案是脚本里修改或者运行时使用ExecuteInEditMode特性。但这对于新手不是重点你只需要记住一件事Play模式下Inspector里出现的所有改动都是暂时的不要试图靠拖拽来“微调”正式场景中的数值调试完成后记得在停止Play状态下再设置一遍。5. 基础概念串讲GameObject、Component、Prefab5.1 GameObject是皮Component是肉现在我们的场景里有Cube、有平行光、有摄像机。它们全是GameObject。那GameObject到底是什么呢说白了GameObject就是一个空的“挂载点”它本身不包含任何表现或行为信息——只有位置、旋转、缩放Transform是每个GameObject都自带的。别的能力全靠挂组件。摄像机能看到画面是因为它挂了Camera组件和AudioListener组件。物体能被渲染出来是因为它挂了MeshRenderer组件而MeshRenderer引用了MeshFilter几何顶点数据和Material表面材质。物体受重力影响是因为它挂了Rigidbody和Collider。所以Unity里写代码、调参数干的事情就是两件给物体添加组件设置组件属性。你以后看到任何Unity问题都可以先在脑子里把这个问题拆成“哪个物体哪个组件哪个属性”方向立刻就清楚了。5.2 用代码控制组件第一个MonoBehaviour脚本在Project窗口的Assets上右键选择Create C# Script命名为Rotator双击打开。Visual Studio会自动启动默认会生成一段模板代码using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotator : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }这串模板就是Unity灵魂的浓缩。Start()会在“物体被启用后的第一帧之前”调用一次Update()则会在每一帧都调用一次。现在我们让Cube旋转起来把Update方法改成void Update() { transform.Rotate(0f, 45f * Time.deltaTime, 0f); }这里最关键的是那个Time.deltaTime——它表示上一帧到当前帧所经过的时间。为什么要乘它因为不同电脑的帧率不一样如果直接写Rotate(0, 45, 0)那么显示器120Hz的电脑上Cube每秒转5400度而显示器30Hz的电脑上它每秒只转1350度速度完全不一致。乘上deltaTime之后无论帧率是多少物体每秒钟的旋转角度都恒定是45度。这个道理几乎贯穿所有Unity编程所有跟运动、时间、速度有关的Update逻辑都必须乘deltaTime。否则就是“帧率依赖”同一个游戏在你电脑上转得飞快、在别人电脑上慢吞吞。这不是玄学这是实时渲染和游戏循环的基本常识。5.3 Prefab预制体别重复劳动你现在有了一个会旋转的Cube但假如场景里需要100个一模一样的旋转Cube难道要复制出100个GameObject、各自挂一遍脚本吗当然不需要。把Cube从Hierarchy窗口拖到Project窗口里瞬间就创建了一个Prefab资产。此时Hierarchy里的Cube变成了蓝色字体表示它是这个Prefab的一个实例。Prefab的本质是“把组件配置打包成可复用资源”它的核心价值有两个批量调整修改Prefab原始资产的参数场景中所有实例会同步更新不用一个个改。动态生成脚本里可以通过Instantiate方法在运行时克隆Prefab这是敌人、子弹、掉落物最标准的生成方式。在Unity项目里几乎所有可复用的物体都应该做成Prefab。如果你发现自己在工程里到处复制粘贴物体那就说明你还没有进入正确的工作流。6. 坐标系、摄像机与基础操作思路6.1 左手坐标系和Unity的轴约定Unity采用左手坐标系X轴向右Y轴向上Z轴向前朝向屏幕里。这和很多3D建模软件不一样比如Maya和3ds Max的坐标轴约定就与之有差异导致模型从DCC工具导入后经常出现“朝向不对”的问题。你以后导入模型时如果发现角色面向的是你屏幕的右边而不是前面大概率就是坐标系约定在作祟。解决办法也很简单要么在建模软件里导出前把旋转清零要么Unity导入设置里调整Forward和Up。说得直白一点Unity里所有的“朝向”本质上都是旋转值。你让角色“面朝敌人”实际做的是把角色的正前方向量旋转到指向敌人的方向。这节不必展开数学但你心里得有个数核心是Transform的Position位置、Rotation旋转)、Scale缩放三者是用3x4矩阵来描述的。旋转部分有欧拉角和四元数两种表达方式编辑器里默认显示欧拉角但代码里写旋转时如果用欧拉角搞不好会遇到万向锁问题——所以新手尽可能用Transform.Rotate、Quaternion.LookRotation这类封装好的API而不是自己X/Y/Z乱调。做一个简单测试在Cube的Rotation输入框分别试(0, 90, 0)和(90, 0, 0)观察它在Scene视图里的变化。相信我你现在花10分钟感受旋转方向比以后调试角色朝向时花一晚上强得多。6.2 摄像机跟随的经典逻辑热搜词里有“unity摄像机跟随”这是个非常经典的新手需求也是很多人第一次接触“游戏循环”的直观案例。最简单的跟随写法是把Main Camera拖成Player的子物体——像挂在玩家身上的自拍杆玩家怎么动相机就怎么动。但这个方法有个致命缺点如果玩家角色带物理碰撞Rigidbody Collider摄像机跟着角色旋转时会被场景墙壁遮挡而且相机视角会跟着角色roll翻转玩久了直接晕。正规点的方案是在脚本的LateUpdate注意不是Update里做插值跟随public class CameraFollow : MonoBehaviour { public Transform target; public Vector3 offset new Vector3(0, 3, -6); public float smoothSpeed 5f; void LateUpdate() { Vector3 desiredPosition target.position target.up * offset.y target.forward * offset.z; transform.position Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime); transform.LookAt(target); } }为什么要写在LateUpdate里因为Update是逻辑更新而摄像机跟随放在LateUpdate回保证它是在所有物体完成移动后才进行位置计算这样相机永远追的是最新帧的位置不会出现画面抖动或滞后感。这个细节在Unity里非常经典也是面试题里常客。6.3 分辨率、窗口与发布前的视觉检查另一个让新手崩溃的问题是“我在编辑器里看着好好的发布出来全变形了”。这大概率是分辨率适配的问题。在Game视图左上角默认可能显示Free Aspect自由比例你随便拉窗口大小画面就会跟着变形。改成Fixed Resolution并指定一个目标分辨率比如1920x1080Game视图就会保持一个固定宽高比这样像素级布局才能所见即所得。对于UIUnity的Canvas默认是按“屏幕空间-叠加”模式渲染的它的核心依赖是CanvasScaler组件。新手最容易犯的错误是CanvasScaler里UI Scale Mode保持Constant Pixel Size不变然后把UI坐标写死了实际上要做不同分辨率适配应该把它改成Scale With Screen Size参考分辨率填你设计时的基准值比如1920x1080这样才能在不同屏幕比例下保持UI相对位置一致。这个话题以后做UI篇可以展开现在只提一句UI适配是“Canvas的CanvasScaler 锚点”两个机制配合的结果缺一不可。7. 资源和场景的本质你在编辑器中看到的都是“文件”7.1 Assets目录与.meta文件切换到文件资源管理器打开项目的Assets文件夹你会发现除了素材文件每个文件和文件夹都跟着一个同名.meta文件。很多新手会好奇这玩意能不能删不能。.meta文件是Unity用于管理资源GUID的地方。GUID是资源在Unity内部全局唯一的标识场景里引用哪个模型、哪个Prefab挂在哪个脚本上都是靠GUID关联的。如果你删了.metaUnity会重新生成一个新GUID那么所有引用这个资源的地方全部断开场景里的物体就会变成“Missing”脚本引用会变成无法解析。所以平时管理资源时尽量不要在Windows资源管理器里直接移动文件——在Project窗口内部移动Unity会帮你同步更新.meta和引用。这一点是新手最容易犯且最致命的管理错误记住资源操作都在Unity的Project窗口里做不要用Windows Explorer乱动。7.2 场景到底是什么场景文件.unity本质上是一个序列化的对象描述文件里面记录了场景中所有物体的数据、组件的引用、连接关系等。有意思的是Unity场景文件其实可以用文本编辑器打开看——Unity同时支持YAML格式的序列化默认和二进制格式。你打开之后会发现它可不是什么加密的图形文件而是一长串可读的文本里面每个GameObject都有自己的fileID和局部标识符。从这个角度理解“场景”就是你整个游戏的“关卡”——玩家开始游戏时会加载进入一个场景切换关卡本质就是加载另一个场景。热搜词里的“Unity数字孪生”和“Cesium for Unity”项目本质也是利用场景承载一整个三维虚拟环境。另外多说一句场景文件很大时合并工程、用Git协作会冲突所以行业里推荐一个场景尽量简洁一个大型项目最好拆到多个场景里通过加载管理器动态切换。这个点在团队协作篇里会细讲。7.3 版本控制常识你的工程不是数据保险箱Unity工程默认包含Library、Temp、Obj、Logs这些文件夹它们都是缓存和中间产物体积很大但不该提交到Git。入门阶段你至少做一件事在项目根目录放一个.gitignore文件把Library、Temp、Obj、UserSettings排除掉。否则你的仓库会迅速膨胀到几个GB而且每次切换分支都可能因为Library缓存混乱产生一系列“找不到脚本”“材质丢了”的假报错。TextMesh Pro这种插件包还会在Assets里生成一个带有默认字体的文件夹那个文件建议纳入版本控制否则入职新机器后老项目里的字体材质全都会变粉色。8. 新手最常踩的五个坑与排查思路8.1 场景里物体看不见这个问题的排查顺序是摄像机朝哪看物体在不在摄像机视锥体内有没有光源MeshRenderer勾没勾Enabled有时候还可能是物体在某个非常远的坐标比如x100000看起来像不见了。最稳妥的排查方式是在Hierarchy里双击物体聚焦到它然后看Inspector的Transform坐标是否符合预期。再不行把摄像机坐标拉近或者重置回(0,1,-10)。8.2 脚本报错但看不出原因最常用的排查办法是把Console窗口始终打开留意报错是编译错误红色的大字往往发生在Play之前、运行时错误运行时Console出现红色堆栈还是逻辑错误代码执行了但行为不符合预期。新手最容易忽略的是脚本文件的名字必须和类名一致否则Unity在编译阶段就直接报错而且这个错误会阻塞整个项目的运行。8.3 运行时物体不见了如果你在Play模式下点击Hierarchy里的物体看到它是虚的或者连Hierarchy里都找不到它了先别急着重启编辑器。检查代码里是不是有Destroy(gameObject)、SetActive(false)这类操作尤其是在Start或Awake阶段执行的那它就真的被销毁或禁用了。再不行在Console里搜索“Missing”或“Exception”大多数情况都会有提示。8.4 阴影问题热搜词里的“unity阴影问题”几乎是每个做3D的人必遇的一次。最常见的原因有几个光源没勾选Shadows的TypeURP项目里Shadow Distance设置太小物体没有MeshRenderer或者Shader为Unlit/不受阴影。解决办法也很直接选中有阴影缺失的光源在Light组件里把Shadow Type改成Hard或Soft然后把URP Asset里的Shadow Distance调大到几十或上百。这块内容展开讲非常多细节我只说一句阴影不是“天生就有”的你需要光源、接收物体、阴影投射设置三者配合才能出现最基本的影子。8.5 性能突然卡顿新手项目卡顿通常不是算法问题而是场景里有大量高模、灯光实时计算、未关闭的后处理。前期不用焦虑养成几个好习惯就能规避所有贴图压成ASTC/ETC等平台格式时注意压缩所有模型动静分离时关闭没有必要的实时光照尤其是场景里灯多了互相叠加Shadows。具体优化手法等大家基础扎实了再开一篇专项。9. 未来的学习路线与资源选择建议9.1 主线官方手册和官方教程是最好的老师我不推荐新手上来看实体书Unity更新太快了出版之后书里讲的UI和API往往就已经过时了。我的建议是这样以官方手册Unity Manual作为字典以官方Learn页面Unity Learn作为入门教程以官方博客HUB里每周更新的技术文章作为知识扩展。碰到疑难杂症在官方论坛、Unity Discussion、Stack Overflow里搜索英文原词比你在国内中文社区搜“Unity阴影问题”找到的信息准确率高得多。9.2 分支跟着热搜词去解决真实需求热搜词其实是一个特别好的学习指引——“Unity摄像机跟随”、“Unity背包物品拖拽”、“Unity串口通信”、“Unity发布Web部署IIS”、“Pico4开发Unity”、“Cesium for Unity调用离线地图”……这些词背后都对应一个真实的项目需求。我建议你在把基础概念过完之后直接选择一个感兴趣的小需求从零做完一个完整的Mini Demo。这个阶段不要贪多求大做一个能用就行然后在做这个Demo的过程中你会自然遇到资源导入、UI布局、脚本生命周期、打包发布等一系列问题那时候你再看文档的效率比纯背概念高十倍。9.3 进阶Shader、图像学与底层渲染管线等你的脚本能力过关、能独立做一个小游戏之后就可以接触“unity shader”“unity renderer的包围盒”这类偏底层的知识了。Shader入门推荐Unity Shader入门精要这本书虽然版本老了一点但核心的渲染管线、光照模型、数学基础不过时。理解Shader后你就真正跨过了“只会调参数”的阶段能看到屏幕上的像素是怎么一点点计算出来的。另外顺便提一下热搜词里的“Unity和Godot谁更强大”、“Unity和C#八股”、“Unity面试题”这类词说明很多人学Unity的目标很明确——找工作。就我了解的一线游戏/数字孪生公司招聘要求来看Unity工程师的面试重点从来不是API背得多熟而是是否理解组件化架构、生命周期、物理系统、UI适配、性能瓶颈分析这些底层能力。所以你现在的所有基础学习都是在为那几个面试题背后的真实工作场景打地基。一路写到这本来还想聊聊打包和优化但那是后面几篇的内容了。先停在这是因为我觉得你在进入“跑通一个带界面的小游戏”之前最重要的反而不是更多知识点而是把大脑的思维模式切换成“Unity的一套逻辑”万物皆物体行为靠组件变化靠脚本复用靠预制体。这套逻辑一旦通透后面所有的功能实现、问题排查、性能优化对你来说都只是查文档和应用的问题而不是摸黑探索。最后分享一下我个人的习惯吧。我每次在电脑上新建Unity项目的时候都会顺手做三件事在Assets里建好Scripts、Models、Materials、Scenes、Prefabs这几个文件夹在Project Settings的Player里把公司名和产品名改好顺便在Inspector里给默认Camera改个名字建一个CameraFollow脚本塞到Main Camera上。这三分钟的准备会让我后面整个开发周期里少走很多弯路。你也可以试试从下一个项目开始把“好的结构习惯”当成工程能力的一部分而不是等到项目一团乱麻时才回头补课。
返回列表