Unity3D 实用技巧 - 从实践中总结经验(1) - V2EX
UNITY: Game Development Tool
License Comparisons
unn
V2EX    UNITY

Unity3D 实用技巧 - 从实践中总结经验(1)

  •  
  •   unn Feb 10, 2020 2614 views
    This topic created in 2286 days ago, the information mentioned may be changed or developed.

    本文转自 Unity Connect 博主 北京琳云信息科技有限责任公司 巧用 Unity3D 引擎编辑器

    作为一名游戏开发者,学会巧用引擎编辑器,可以让我们创造出更多优秀的游戏作品。今天小编与大家共同浅析这些常见的实用技巧。

    活用 Unity3D 引擎编辑器技巧

    1、通过 Assets 分支保证正确的流程

    所有的 Asset 都应该只有一个唯一的版本。如果当我们需要一个分支版本的 Prefab、Scene 或是 Mesh,那么我们需要制定一个非常清晰的流程,来确定哪个是正确的版本。错误的分支应该起一个特别的名字,例如双下划线前缀:__MainScene_Backup。Prefab 版本分支需要一个特别的流程来保证安全 。

    2、Unity3D 遇到机器突然死机未保存场景的情况

    当你在 Unity3D 中编辑场景,突然死机时,可以在项目文件目录中找到 Temp 文件夹,双击文件夹,找到_Backupscenes 文件夹,把后缀为 .backup 的文件后缀改为 .unity,然后拖进 Unity3D 的 Project 界面里面,这样就可以还原死机前场景最后情况。

    3、考虑编写通用的自定义 Inspector 代码

    作为 Unity3D 的检视面板, 编辑 Inspecto r 属性时,实现自己定义的 Inspector 是非常直截了当的。而编辑器有很多类:编辑器类。例如:EditorGUI (编辑器界面), EditorGUILayout (编辑器界面布局), EditorGUIUtility (编辑器界面工具)等等这些,都是编辑器对界面进行编辑,我们都可以进行学习简单套用。

    4、学会场景对象的灵活设置

    一般我们把控制对象和场景文件夹(空 Game Objec )放在原点( 0,0,0 ),假设位置对于这个对象不重要,那么就把它放到原点。这样你就不会遇到处理 Local Space 和 World Space 的麻烦,代码也会更简洁。

    例如:

    把世界的地面放在 Y=0,这样能够更方便的把对象放到地面上。而且在游戏逻辑中,能够把世界作为 2D 空间来处理(假设合适的话),比如 AI 和物理模拟。

    把角色和地面物体的中心点( Pivot )放在底部。不要放在中间这能够使你方便的把角色或者其它对象精确的放到地板上。假设合适的话,它也可能使得游戏逻辑、AI、甚至是物理使用 2D 逻辑来表现 3D。

    4、学会正确设定对象的 Scale,应该与美术商定把所有导入的缩放系数设置为 1,并且把他们的 Transform 的 Scale 设置为 1,1,1。可以使用一个参考对象(一个 Unity 的 Cube )来做缩放比较。为你的游戏选择一个世界的单位系数,然后坚持使用它。

    5、不要让游戏运行时生成的对象搞乱场景层次结构

    在游戏运行时,为动态生成的对象设置好它们的父对象,可以让你更方便的查找。你可以使用一个空的对象,或者一个没有行为的单件来简化代码中的访问。可以给这个对象命名为“DynamicObjects”。

    单件可以作为一些管理器,例如 ParticleManager 或者 AudioManager 亦或者 GUIManager。 对于那些非唯一的 Prefab 实例使用单件管理器(例如 Player )。不要为了坚持这条原则把类的层次关系复杂化,宁愿在你的 GameManager (或其他合适的管理器中)中持有一个它们的引用。 对于外部经常使用的共有变量和方法定义为 Static,这样你可以这样简便的书写 “GameManager.Player” ,而不用写成 “GameManager.Instance.player” 。

    6、学会活用编辑器的快捷键

    按键盘键 Q、W、E、R、T 可以依次切换界面上的小工具。除此之外,按数字键 2 或 3 还可以切换场景为 2D 模式或 3D 模式。如果觉得在场景视图中调整对象视角太不方便,可以按住右键结合键盘上的 A、S、W、D、Q、E 键像走路一样调整到合适的视角,然后点击 GameObject 菜单下的 Align With View 即可将游戏视图的视角与场景视图同步。

    7、如何应对脚本的运行出错

    如果脚本出现错误,Unity 编辑器会因为检查到出错而无法进入运行模式,这时可以在项目视图中新建文件夹 WebplayerTemplates,然后将出错的脚本拖入此文件夹下,所有位于该文件夹下的文件都会被识别为一般文件从而不会当作脚本被编译,这样就可以运行游戏了。

    8、掌握 Unity3D 引擎编辑器中可用的调试工具

    Unity3D 中的调试工具有许多功能,包括可以有效帮助用户调试游戏的功能,例如 Debug.Break,Debug.Log ,Debug.DrawRay 和 Debug.DrawLine 等函数。前两个函数用于理解游戏状态,而后两个函数可帮助用户直观地调试游戏。用户还可以使用调试可视检查器来查找运行时的私有字段,调试可视化检查用户需要以不同方式来调试可视化检查。Visual 调试器可以通过生成图表来帮助用户实现这一点,用户可以使用 Monitor Components 执行此操作。

    9、掌握 Unity3D 引擎编辑器中可用的测试工具

    Unity3D 发布了许多测试工具,这增加了用户的调试改进方法,Unity3D 的测试工具不仅适合正式测试,而且还可以便于进行可以在编辑器中运行,同时无需场景运行的 Scratch-pad 测试。

    活用游戏项目工作流程技巧

    工作流程改进技巧旨在帮助用户改进游戏开发过程。使用户的项目完成得更快,更正确。

    1、使用源代码控制,获得工作最大效率

    正确使用源代码控制来改善用户的工作流程。这将确保用户不会丢失任何工作,还可以让用户检查更改的内容。用户可以序列化资源,使用分支策略来最大限度地控制生产,并使用子模块来最大化源代码的有效控制。

    2、确认项目中所需资源的大小

    这一决定取决于用户的项目类型以及游戏运行的分辨率。

    3、始终用自动化构建过程,节省时间。

    自动化构建过程还将确保用户可以同时处理不同的游戏版本,并且帮助用户进行小的更改,无需在每次更改后完成整个构建过程。

    4、随时保存文档

    养成随手保存好习惯能避免各种问题。此外,文档可以让项目组其他成员更好地了解、协助完成本项目。

    5、将测试场景与代码分开

    测试场景可能是项目中一个庞大的部分,在项目完成后这些测试场景是没有用的。要确保项目文件不会太占空间,请将测试场景与代码分开,并在项目完成后将其删除。

    原文链接: https://connect.unity.com/p/unity3d-shi-yong-ji-qiao-cong-shi-jian-zhong-zong-jie-jing-yan-1?app=true 更多 Unity 精彩内容,请戳上方链接,下载 Unity 官方 app,在线讨论,技术疑,干货满满!

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     5516 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 08:05 PVG 16:05 LAX 01:05 JFK 04:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86