Unity3D 回退操作(二)

删除对象 通过Undo类中的DestroyObjectImmediate函数可以将删除的对象“记住”,如果使用回退操作是可以复原出删掉对象的。创建UndoOperation.cs,编写如下代码:

编写完成后,即可将 […]


Unity3D 回退操作(一)

回退操作 在Unity3D编辑器扩展时,经常有影响很大的属性操作,比如更改坐标位置,或增删GameObject。当误操作时,常规的回退是Undo操作即:Cmd/Ctrl + z。那么如何让一个编辑器扩展功能支持回退操作呢? 具体说来,现在有一批预设中有很多无用且Disable的G […]


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,编写如下代码:

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