Unity 游戏框架搭建:第一个示例整理

本文介绍了一个Unity项目中用于导出UnityPackage的代码优化过程,包括调整代码位置至Editor目录,修改菜单路径以匹配目录结构,以及移除UNITY_EDITOR预处理器指令,确保不影响项目打包。
代码如下:
    
using System ; using System . IO ; # if UNITY_EDITOR using UnityEditor ; # endif using UnityEngine ; namespace QFramework { public partial class Exporter { # if UNITY_EDITOR [ MenuItem ( "QFramework/1.导出 UnityPackage %e" , false , 1 ) ] private static void MenuClicked ( ) { var generatePackageName = Exporter . GenerateUnityPackageName ( ) ; EditorUtil . ExportPackage ( "Assets/QFramework" , generatePackageName + ".unitypackage" ) ; EditorUtil . OpenInFolder ( Path . Combine ( Application . dataPath , "../" ) ) ; } # endif public static string GenerateUnityPackageName ( ) { return "QFramework_" + DateTime . Now . ToString ( "yyyyMMdd_hh" ) ; } } }
这个代码是一个完整的导出功能。而这个导出功能应该算是框架的内容,而这个代码要在 Editor 环境下才能运行,所以,我们要把这个文件放到 QFramework/Framework/Editor 目录下。
那么它之前是作为示例进行收集的,但是这个示例本身的学习功能没有那么强,更强的是导出功能。所以没有必要把它的 MenuItem 部分拆分到 Example 里。
根据以上结论,目录更改后如下:
更改这个目录之后,对应的菜单,我们也要改下,按照我们的约定和规则,我们只需要保证菜单与目录结构一致即可。
菜单更改后的代码如下:
    
using System ; using System . IO ; # if UNITY_EDITOR using UnityEditor ; # endif using UnityEngine ; namespace QFramework { public partial class Exporter { # if UNITY_EDITOR [ MenuItem ( "QFramework/Framework/Editor/导出 UnityPackage %e" , false , 1 ) ] private static void MenuClicked ( ) { var generatePackageName = GenerateUnityPackageName ( ) ; EditorUtil . ExportPackage ( "Assets/QFramework" , generatePackageName + ".unitypackage" ) ; EditorUtil . OpenInFolder ( Path . Combine ( Application . dataPath , "../" ) ) ; } # endif public static string GenerateUnityPackageName ( ) { return "QFramework_" + DateTime . Now . ToString ( "yyyyMMdd_hh" ) ; } } }
由于,我们已经把代码放到 Editor 目录下了,这样使用 UnityEditor 的 API 并不会影响我们项目的打包等操作了,所以我们可以把 UNITY_EDITOR 宏判断可以去掉了。
去掉后代码如下:
    
using System ; using System . IO ; using UnityEditor ; using UnityEngine ; namespace QFramework { public partial class Exporter { [ MenuItem ( "QFramework/Framework/Editor/导出 UnityPackage %e" , false , 1 ) ] private static void MenuClicked ( ) { var generatePackageName = GenerateUnityPackageName ( ) ; EditorUtil . ExportPackage ( "Assets/QFramework" , generatePackageName + ".unitypackage" ) ; EditorUtil . OpenInFolder ( Path . Combine ( Application . dataPath , "../" ) ) ; } public static string GenerateUnityPackageName ( ) { return "QFramework_" + DateTime . Now . ToString ( "yyyyMMdd_hh" ) ; } } }
等待编译之后,菜单栏如下: 虽然菜单层级变多了,但是我们是按照当前的约定和规则做的,所以要改也是先把目录结构整理完再改。
转载请注明地址:凉鞋的笔记: liangxiegame.com 订阅全套专栏或参加小班: liangxiegame.com
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值