在前两篇,咱们把全部的示例重头到尾整理了一遍。git
当前的状态以下:github
咱们看下以上遗留问题里,示例重复这个作完了,还差一个菜单栏显示顺序问题,还有一个弃用的代码的警告。框架
两个看起来,弃用代码的警告立刻就有思路了,就只要保证功能正确的状况下重写代码就行了。dom
咱们看下编辑器的弃用代码警告:
目前有 5 个警告,主要集中在示例 7 和把中。咱们一项一项解决。编辑器
先看示例七的代码:ide
using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { var generatePackageName = PreviousFunctions.GenerateUnityPackageName(); PreviousFunctions.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); PreviousFunctions.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }
很容易改。改完以后的代码以下:函数
using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { var generatePackageName = Exporter.GenerateUnityPackageName(); EditorUtil.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }
以后编译后的结果以下所示:
还剩两个,咱们看下第 8 个示例的代码。工具
... public class PreviousFunctions { ... [MenuItem("QFramework/8.总结以前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结以前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",GenerateUnityPackageName() + ".unitypackage"); } ... } ...
主要问题在 GenerateUnityPackageName,这个在整理第个示例的时候忘记了,改为以下代码就行了。学习
... public class PreviousFunctions { ... [MenuItem("QFramework/8.总结以前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(Exporter.GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结以前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",Exporter.GenerateUnityPackageName() + ".unitypackage"); } ... } ...
这样编译警告就没有了。优化
警告的问题所有解决了,弃用的方法就所有能够删掉了,由于弃用的方法,只要被调用了才会报警告,可是在删除弃用方法的时候要当心一点,由于弃用的方法有多是在某个宏里边调用的,这时候最好用一下 IDE 的全局搜索字符串,通常 IDE 都会有,怎么用,本身用搜索引擎查一下就好了。
咱们在这篇把全部的弃用代码删除掉。
代码以下
using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class TransformLocalPosImprovements { #if UNITY_EDITOR [MenuItem("QFramework/10.Transform 赋值优化")] #endif private static void GenerateUnityPackageName() { var transform = new GameObject("transform").transform; TransformSimplify.SetLocalPosX(transform, 5.0f); TransformSimplify.SetLocalPosY(transform, 5.0f); TransformSimplify.SetLocalPosZ(transform, 5.0f); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosX(Transform transform, float x) { TransformSimplify.SetLocalPosX(transform, x); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosY(Transform transform, float y) { TransformSimplify.SetLocalPosY(transform, y); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosZ(Transform transform, float z) { TransformSimplify.SetLocalPosZ(transform, z); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosXY(Transform transform, float x, float y) { TransformSimplify.SetLocalPosXY(transform, x, y); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosXZ(Transform transform, float x, float z) { TransformSimplify.SetLocalPosXZ(transform, x, z); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosYZ(Transform transform, float y, float z) { TransformSimplify.SetLocalPosYZ(transform, y, z); } } }
删除的步骤以下:
每个弃用的方法咱们都要这样一个一个去解决。
解决按以后代码以下:
#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class TransformLocalPosImprovements { #if UNITY_EDITOR [MenuItem("QFramework/10.Transform 赋值优化")] #endif private static void GenerateUnityPackageName() { var transform = new GameObject("transform").transform; TransformSimplify.SetLocalPosX(transform, 5.0f); TransformSimplify.SetLocalPosY(transform, 5.0f); TransformSimplify.SetLocalPosZ(transform, 5.0f); } } }
第十个示例解决了。
使用以上的步骤,整理后的示例代码以下:
#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; using System; using System.IO; namespace QFramework { public class CommonUtil { public static void CopyText(string text) { GUIUtility.systemCopyBuffer = text; } } public class Exporter { public static string GenerateUnityPackageName() { return "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh"); } } public class EditorUtil { #if UNITY_EDITOR public static void CallMenuItem(string menuPath) { EditorApplication.ExecuteMenuItem(menuPath); } public static void OpenInFolder(string folderPath) { Application.OpenURL("file:///" + folderPath); } public static void ExportPackage(string assetPathName,string fileName) { AssetDatabase.ExportPackage(assetPathName, fileName, ExportPackageOptions.Recurse); } #endif } public class PreviousFunctions : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/8.总结以前的方法/1.获取文件名")] private static void MenuClicked() { Debug.Log(Exporter.GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结以前的方法/2.复制文本到剪切板")] private static void MenuClicked2() { CommonUtil.CopyText("要复制的关键字"); } [MenuItem("QFramework/8.总结以前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(Exporter.GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结以前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",Exporter.GenerateUnityPackageName() + ".unitypackage"); } [MenuItem("QFramework/8.总结以前的方法/5.打开所在文件夹")] private static void MenuClicked5() { EditorUtil.OpenInFolder(Application.dataPath); } [MenuItem("QFramework/8.总结以前的方法/6.MenuItem 复用")] private static void MenuClicked6() { EditorUtil.CallMenuItem("QFramework/8.总结以前的方法/4.导出 UnityPackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }
是否是感受清爽了不少?哈哈哈。
整理以后代码以下:
using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class TransformSimplify { /// <summary> /// 重置操做 /// </summary> /// <param name="trans">Trans.</param> public static void Identity(Transform trans) { trans.localPosition = Vector3.zero; trans.localScale = Vector3.one; trans.localRotation = Quaternion.identity; } public static void SetLocalPosX(Transform transform, float x) { var localPos = transform.localPosition; localPos.x = x; transform.localPosition = localPos; } public static void SetLocalPosY(Transform transform, float y) { var localPos = transform.localPosition; localPos.y = y; transform.localPosition = localPos; } public static void SetLocalPosZ(Transform transform, float z) { var localPos = transform.localPosition; localPos.z = z; transform.localPosition = localPos; } public static void SetLocalPosXY(Transform transform, float x, float y) { var localPos = transform.localPosition; localPos.x = x; localPos.y = y; transform.localPosition = localPos; } public static void SetLocalPosXZ(Transform transform, float x, float z) { var localPos = transform.localPosition; localPos.x = x; localPos.z = z; transform.localPosition = localPos; } public static void SetLocalPosYZ(Transform transform, float y, float z) { var localPos = transform.localPosition; localPos.y = y; localPos.z = z; transform.localPosition = localPos; } } public class TransformIdentity : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/11.Transform 归一化")] #endif private static void MenuClicked() { var transform = new GameObject("transform").transform; TransformSimplify.Identity(transform); } } }
整理以后代码以下:
using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; using Random = UnityEngine.Random; namespace QFramework { public class MathUtil { /// <summary> /// 输入百分比返回是否命中几率 /// </summary> public static bool Percent(int percent) { return Random.Range (0, 100) <= percent; } } public class PercentFunction : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/12.几率函数")] #endif private static void MenuClicked() { Debug.Log(MathUtil.Percent(50)); } } }
到目前为止,咱们把全部的弃用的方法所有删除了。
所有删除以后,笔者的心情轻松了不少。
当前的状态以下:
注意:在约定和规则部分,增长了删除弃用代码的步骤。
今天内容就这些,咱们在下篇接着整理。
转载请注明地址:凉鞋的笔记:liangxiegame.com
QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
Unity 进阶小班:
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。