联系方式
学习资讯
unity手游开发培训的学习难点有哪些?
unity手游开发培训的学习难点有哪些?
在 Unity 手游开发培训中,存在一些学习难点。首先,从整体开发过程来看,UI 开发中要慎重选择模式,如 strangeioc 这样的依赖注入框架不错,但如果不用框架,代码分层一定要做好,数据层和表现层要明确区分,否则后期换 UI 时找代码会非常困难。序列化要做好,同时要尽量少用 Find、GetComponents、AddComponent 等方法,单例模式在表现层也应少用,不然后期释放资源时可能会因静态引用问题难以找到问题所在。
对于初级开发者而言,理解 MVC 模式有一定难度。MVC 模式代表 Model-View-Controller(模型 - 视图 - 控制器)模式,用于应用程序的分层开发。其中模型代表存取数据的对象或 JAVA POJO,可带有逻辑并在数据变化时更新控制器;视图代表模型包含的数据的可视化;控制器作用于模型和视图上,控制数据流向模型对象并在数据变化时更新视图,使视图与模型分离开。一个模型可以被多个视图重用,提高了代码的可重用性,且三个模块相互独立,改变其中一个不会影响其他两个,构造了良好的松耦合构件,同时控制器提高了应用程序的灵活性和可配置性。
在 UGUI 相关方面,掌握图集的打包是难点。UGUI 图集是将多个纹理合并为一个组合纹理的资源,Unity 调用单个纹理发出单个绘制调用,能减少性能开销,但如果打包不当会产生大量 Draw Call,影响性能。不同平台 UI 贴图的资源格式选择也需要深入学习。
此外,Unity 开发中还可能面临查找功能不够强大的问题,在项目中查找脚本比较麻烦;不支持链接到第三方库,使用时需手动拷贝到工程中来;编辑 prefab 不太方便等。同时,学习曲线陡峭也是一个难点,对于初学者来说,需要花费一定时间和精力熟悉 Unity 的界面、工具和编程语言。性能优化也是重要难点,随着游戏复杂度提高,要掌握优化游戏的内存使用、渲染性能等方面,以确保游戏在不同平台上的流畅运行。错误调试相对复杂,特别是处理跨平台兼容性问题时,需要掌握有效的调试技巧和方法。版本更新也可能导致旧项目或脚本在新版本中出现问题,开发者需要密切关注更新情况并适时进行项目迁移和更新。
Unity 手游开发中 UI 开发难点
在 Unity 手游开发中,UI 开发存在一些难点。首先,要慎重选择模式,一个依赖注入的框架如 strangeioc(mvcs 模式,解耦形式)是不错的选择。如果不用框架,代码分层一定要做好,将数据层和表现层分开,避免后期换 UI 时找代码困难。在 UGUI 中,UI 是有优先级的,优先级高的会先起作用。例如,一个 Button 被一个 Image 挡住,在 game 模式中运行起来可能会发现 Button 不起作用。这是因为在 canvas 下,越靠下的位置优先级越高,所以在开发过程中,注意不要把背景或者一些不能交互的 UI 放在 canvas 最下面,以免出现 UI 不能使用且难以发现问题的情况。
课程总体分为七大部分,其中窗体层级管理是重点与难点,需要花费大量时间对核心开发理念和具体实现编码进行详细讲解。对于模态窗体管理,游戏项目中对于重要信息经常会出现 “弹出窗口”,需要设计多种(模态)窗体的属性,以适应不同游戏项目的开发需求。日志调试与配置管理也很重要,游戏项目开发经常会遇到 PC 端运行良好,发布移动端出现崩溃、死机、数值与预期不同的调试难题,需要从高级日志的开发讲解到基于 Json 的配置管理的应用,以应对灵活多变的需求开发。消息传递中心也是关键,Unity 游戏项目中存在多种数值(消息)的传递方式,但大多数的消息传递方式耦合性太高,造成项目模块的 “复用性” 降低,需要采用 “消息中心” 的思想,开发类似 “发邮件”、“收邮件” 的机制,杜绝脚本之间强耦合现象。
在实践过程中,UI 界面元素大致分为两类,一类是重复的结构在 UI 界面以列表、网格等形式重复出现,一类是非重复或者容器性质的 UI 界面元素。所以在设计 UI 管理类的时候,可以定义两个概念:面板和组件。所有完整的界面都是面板,面板可以持有多个组件,并作为父级单位管理好子级的组件的生命周期。组件存在的意义一方面是可以拼一个预设体,让面板负责实例化,达到复用;另一方面是对于复杂结构的面板,可以做功能拆分,减少超重型面板。有了这个划分,UI 脚本的模板即可以围绕此设计出来面板和组件两类。由于 Unity 的 UGUI 只提供了 ScrollRect,在此基础上,UI 框架本身可以封装类似于 iOS 的 ListView/CollectionView 或者 Android 的 RecycleView 等风格的自动管理组件复用的 UI,这样,类似于列表和网格类的 UI 就可以通用,而无需每次都去造轮子。
Unity 查找功能不足
Unity 的查找功能存在一些不足。查找功能不够强大,有时候在项目中查找脚本比较麻烦。例如,GameObject.Find () 无法获取天生就是 active=false 的对象,为了防止对象重名,可以利用路径,但路径是双刃剑,如果对象在面板的位置变动了,就无法找到。查找相当于递归查找,效率低下,最好把查找到的对象保存在内存中,不要在 Update 函数里面调用 Find 方法。Transform.Find () 可以查找到隐藏的子对象,但前提是根节点不能是隐藏的,find 是用来查找 child 的,所以对于孙子对象,应该用路径。其他利用 tag 查找使用的并不是很多。FindObjectsOfTypeAll () 一般用在编辑器里面,比如要做批量检查场景的工具,查找场景中有没有使用某个特殊类型的对象,或者查看内存的占用量,看看当前内存中那些 Texture 没有被释放掉。Transform.GetChild (index) 前提是要知道子对象的索引。
在 Unity 手游开发培训中,存在一些学习难点。首先,从整体开发过程来看,UI 开发中要慎重选择模式,如 strangeioc 这样的依赖注入框架不错,但如果不用框架,代码分层一定要做好,数据层和表现层要明确区分,否则后期换 UI 时找代码会非常困难。序列化要做好,同时要尽量少用 Find、GetComponents、AddComponent 等方法,单例模式在表现层也应少用,不然后期释放资源时可能会因静态引用问题难以找到问题所在。
对于初级开发者而言,理解 MVC 模式有一定难度。MVC 模式代表 Model-View-Controller(模型 - 视图 - 控制器)模式,用于应用程序的分层开发。其中模型代表存取数据的对象或 JAVA POJO,可带有逻辑并在数据变化时更新控制器;视图代表模型包含的数据的可视化;控制器作用于模型和视图上,控制数据流向模型对象并在数据变化时更新视图,使视图与模型分离开。一个模型可以被多个视图重用,提高了代码的可重用性,且三个模块相互独立,改变其中一个不会影响其他两个,构造了良好的松耦合构件,同时控制器提高了应用程序的灵活性和可配置性。
在 UGUI 相关方面,掌握图集的打包是难点。UGUI 图集是将多个纹理合并为一个组合纹理的资源,Unity 调用单个纹理发出单个绘制调用,能减少性能开销,但如果打包不当会产生大量 Draw Call,影响性能。不同平台 UI 贴图的资源格式选择也需要深入学习。
此外,Unity 开发中还可能面临查找功能不够强大的问题,在项目中查找脚本比较麻烦;不支持链接到第三方库,使用时需手动拷贝到工程中来;编辑 prefab 不太方便等。同时,学习曲线陡峭也是一个难点,对于初学者来说,需要花费一定时间和精力熟悉 Unity 的界面、工具和编程语言。性能优化也是重要难点,随着游戏复杂度提高,要掌握优化游戏的内存使用、渲染性能等方面,以确保游戏在不同平台上的流畅运行。错误调试相对复杂,特别是处理跨平台兼容性问题时,需要掌握有效的调试技巧和方法。版本更新也可能导致旧项目或脚本在新版本中出现问题,开发者需要密切关注更新情况并适时进行项目迁移和更新。
Unity 手游开发中 UI 开发难点
在 Unity 手游开发中,UI 开发存在一些难点。首先,要慎重选择模式,一个依赖注入的框架如 strangeioc(mvcs 模式,解耦形式)是不错的选择。如果不用框架,代码分层一定要做好,将数据层和表现层分开,避免后期换 UI 时找代码困难。在 UGUI 中,UI 是有优先级的,优先级高的会先起作用。例如,一个 Button 被一个 Image 挡住,在 game 模式中运行起来可能会发现 Button 不起作用。这是因为在 canvas 下,越靠下的位置优先级越高,所以在开发过程中,注意不要把背景或者一些不能交互的 UI 放在 canvas 最下面,以免出现 UI 不能使用且难以发现问题的情况。
课程总体分为七大部分,其中窗体层级管理是重点与难点,需要花费大量时间对核心开发理念和具体实现编码进行详细讲解。对于模态窗体管理,游戏项目中对于重要信息经常会出现 “弹出窗口”,需要设计多种(模态)窗体的属性,以适应不同游戏项目的开发需求。日志调试与配置管理也很重要,游戏项目开发经常会遇到 PC 端运行良好,发布移动端出现崩溃、死机、数值与预期不同的调试难题,需要从高级日志的开发讲解到基于 Json 的配置管理的应用,以应对灵活多变的需求开发。消息传递中心也是关键,Unity 游戏项目中存在多种数值(消息)的传递方式,但大多数的消息传递方式耦合性太高,造成项目模块的 “复用性” 降低,需要采用 “消息中心” 的思想,开发类似 “发邮件”、“收邮件” 的机制,杜绝脚本之间强耦合现象。
在实践过程中,UI 界面元素大致分为两类,一类是重复的结构在 UI 界面以列表、网格等形式重复出现,一类是非重复或者容器性质的 UI 界面元素。所以在设计 UI 管理类的时候,可以定义两个概念:面板和组件。所有完整的界面都是面板,面板可以持有多个组件,并作为父级单位管理好子级的组件的生命周期。组件存在的意义一方面是可以拼一个预设体,让面板负责实例化,达到复用;另一方面是对于复杂结构的面板,可以做功能拆分,减少超重型面板。有了这个划分,UI 脚本的模板即可以围绕此设计出来面板和组件两类。由于 Unity 的 UGUI 只提供了 ScrollRect,在此基础上,UI 框架本身可以封装类似于 iOS 的 ListView/CollectionView 或者 Android 的 RecycleView 等风格的自动管理组件复用的 UI,这样,类似于列表和网格类的 UI 就可以通用,而无需每次都去造轮子。
Unity 查找功能不足
Unity 的查找功能存在一些不足。查找功能不够强大,有时候在项目中查找脚本比较麻烦。例如,GameObject.Find () 无法获取天生就是 active=false 的对象,为了防止对象重名,可以利用路径,但路径是双刃剑,如果对象在面板的位置变动了,就无法找到。查找相当于递归查找,效率低下,最好把查找到的对象保存在内存中,不要在 Update 函数里面调用 Find 方法。Transform.Find () 可以查找到隐藏的子对象,但前提是根节点不能是隐藏的,find 是用来查找 child 的,所以对于孙子对象,应该用路径。其他利用 tag 查找使用的并不是很多。FindObjectsOfTypeAll () 一般用在编辑器里面,比如要做批量检查场景的工具,查找场景中有没有使用某个特殊类型的对象,或者查看内存的占用量,看看当前内存中那些 Texture 没有被释放掉。Transform.GetChild (index) 前提是要知道子对象的索引。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 厦门火星时代教育 网站详细了解,免费咨询电话:400-998-6158