在前兩篇,咱們把全部的示例重頭到尾整理了一遍。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 獲取第一時間更新通知及更多的免費內容。