Unity3D 定制UI(四)

优化体验 按钮背景的替换就这样完成了,但在操作的过程中,我们发现整个流程有个很麻烦的地方:创建出的按钮需要手动拖动并更改位置。不合乎操作习惯就要优化,所以这里将其添加到选中对象的子节点下。

在函数的末尾添加上面的代 […]


Unity3D 定制UI(四)

替换资源 按钮创建好后,就进行真正的替换工作了。这步操作会用到一个名为AssetDatabase的类,它是编辑器对文件操作的核心,几乎所有对资源文件的CRUD都有它的参与。CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除( […]


Unity3D 定制UI(三)

创建标准按钮 菜单入口创建好后,接下来实现功能。大体思路上先创建一个标准按钮,然后换掉上面的图片。创建按钮可以参考下面的代码:

这样右击点选后就会在Hierarchy中创建出一个按钮了。需要注意的是,由于它不在Ca […]


Unity3D 定制UI(二)

创建工具类 首先要确定创建的入口,这方面最好的策略是跟日常操作相似。所以我将其添加在Hierarchy的右键菜单中。新建一个名为CreateTool的脚本,编写如下代码:

这步编辑器操作使用了一个小技巧,在创建菜单 […]


Unity3D 定制UI(一)

定制UI 在制作UI的过程中,大多数资源是相同的,例如: 确定按钮会使用相同的图片。 文字会使用相同的字体。 仅针对于这些情况,请问有办法简化开发UI的流程么? 问题分析 在开发过程中,如果能简化项目中的UI制作流程,能节省大量的时间。但很多开发者只从程序运行的角度架构化代码,而 […]


Unity3D 自定义菜单(五)

菜单标记 另外菜单有选中标记,我们可以利用它作状态的更改操作。例如在频道化日志一篇中提到的日志掩码开关,完全可以使用菜单来进行设置。在Unity3d中,使用Menu.SetChecked可以更改选中状态。下面以实现掩码功能为例,介绍使用菜单标记。创建一个名为MenuMask.cs […]


Unity3D 自定义菜单(四)

快捷键 MenuItem不但可以制作菜单,也可以制作热键功能。例如下面代码:

当按下Ctrl+1时,这个函数就会触发。%是Ctrl的对应关键字。热键的关键字有很多,简单列举一下: 热键标记 对应建 % ctrl(W […]


Unity3D 自定义菜单(三)

如果希望加入Hierarchy面板中的右键菜单,可以使用路径GameObject/开头。希望加入Project面板使用Assets/开头。加入代码如下:

编辑完成后,在不同区域右击。 其中MenuItem的第三个参 […]


Unity3D 自定义菜单(二)

菜单创建 使用Unity3d的内置属性MenuItem可以创建一个菜单。不同的菜单区域,通过的属性的参数区分。例如下面的代码,可用于创建顶部菜单:

参数是个分级路径,可以定义出菜单的父子关系。


Unity3D 自定义菜单(一)

最近项目中加入了不少功能,但功能太多总是找不到启动入口。经过商量大家决定把这些功能都加入到菜单中,请问Unity3d中的菜单一共有多少种呢?它们是都可以添加自定义菜单项吗?如果想在其中加入内容,该如何做? 问题分析 在Unity中常用的菜单区域有以下几个: 顶部下拉菜单 Hier […]


Unity3D 崩溃日志上报(三)

读写文件 环境配置好之后,接下来实现读写文件。首先需要将错误写入到文件中,然后在游戏运行时将内容读出来。这里我借用Unity3d的本地存储数据接口PlayerPrefs。相关代码如下:

当这样实现后,每当游戏运行时 […]


Unity3D 崩溃日志上报(二)

搭建环境 之前在出错暂停一篇中编写过如何监测报错日志,本节的逻辑与它很类似,可以把之前的场景复制一份出来。创建新脚本Upload.cs,编写如下代码:

运行游戏,点击按钮,如果在文本区域输出错误则环境配置正确。


Unity3D 崩溃日志上报(一)

游戏在手机上崩溃了… 真是个令人无奈的事情。由于整个函数堆栈挂掉了,程序没办法借助之前做好的出错暂停来追查问题。偏巧测试人员只能在某些设备上出现问题,而现在必须定位解决问题。在事情变得更棘手之前,有什么好方案来处理这种情况么? 问题分析 回想探案影视剧中,死者如何告诉 […]


Unity3D 频道化日志(四)

融入模块 基础逻辑写好后,就可以将它作为功能添加到日志控制中了。基于之前日志接口优化中的LogManager,我需要将BitMask.cs的逻辑一并编入到DLL中。由于代码不多,我推荐直接将其复制到LogManager.cs中。另一方面,LogManager类需要扩展Mask变量 […]