天天看點

Unity 遊戲架構搭建 2019 (三十三) 代碼檔案命名

在上一篇中,通過第八個示例的第三個 MenuItem 方法,我們更新了約定和規則。

我們接着往下整理。

第八個示例的第四個 MenuItem 方法

[MenuItem("QFramework/8.總結之前的方法/4.導出 UnityPackage")]
		private static void MenuClicked4()
		{
			EditorUtil.ExportPackage("Assets/QFramework",Exporter.GenerateUnityPackageName() + ".unitypackage");
		}
           

這個 MenuItem 可以删除了,因為功能已經在第一個示例實作過了。

第八個示例的第五個 MenuItem 方法

[MenuItem("QFramework/8.總結之前的方法/5.打開所在檔案夾")]
		private static void MenuClicked5()
		{
			EditorUtil.OpenInFolder(Application.dataPath);
		}
           

同樣也删除了。

第八個示例的第六個 MenuItem 方法

[MenuItem("QFramework/8.總結之前的方法/6.MenuItem 複用")]
		private static void MenuClicked6()
		{
			EditorUtil.CallMenuItem("QFramework/8.總結之前的方法/4.導出 UnityPackage");
			EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../"));
		}
           

這個不能馬上删除,因為這是 EditorUtil.CallMenuItem 僅有的一個調用的地方。

是以要留着,但是這個功能其實已經失效了,因為 “QFramework/8.總結之前的方法/4.導出 UnityPackage” 這個 MenuItem 被我們剛才删掉了。好吧,這種危險的操作又做了一次。

不過沒關系,因為不是很重要的功能,還好損失不大。那麼這個 MenuItem 方法呢,要改成如下:

public class PreviousFunctions : MonoBehaviour
	{		
#if UNITY_EDITOR		
        [MenuItem("QFramework/3.MenuItem 複用",false,3)]
		private static void MenuClicked()
		{
			EditorUtil.CallMenuItem("QFramework/2.複制文本到剪切闆");
		}
#endif
	}
           

代碼很容易了解。菜單名字改變了,是以我們的檔案夾和類名都要改變。

更改後的目錄如下:

Unity 遊戲架構搭建 2019 (三十三) 代碼檔案命名

代碼如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;
using System;
using System.IO;

namespace QFramework
{
	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 ReuseMenuItem : MonoBehaviour
	{		
#if UNITY_EDITOR		
		[MenuItem("QFramework/3.MenuItem 複用",false, 3)]
		private static void MenuClicked()
		{
			EditorUtil.CallMenuItem("QFramework/2.複制文本到剪切闆");
		}
#endif
	}
 }
           

我們發現其實還有一個類 EditorUtil,剛好 ReuseMenuItem 是 EditorUtil 中 CallMenuItem 的使用代碼。

是以可以進行合并,合并之後代碼如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
	public class EditorUtil
	{
#if UNITY_EDITOR
		[MenuItem("QFramework/3.MenuItem 複用",false,3)]
		private static void MenuClicked()
		{
			CallMenuItem("QFramework/2.複制文本到剪切闆");
		}

		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
	}
}
           

但是類的名字,改變了,而類所在的檔案名還是 ReuseMenuItem,這應該怎麼辦?

這是一個規則之間的互相制衡導緻的沖突。

筆者的解決辦法就是,把代碼名字改成 EditorUtil,最起碼類名和檔案名一緻了。功能名和菜單名也一緻了。而 EditorUtil 總好過一個 CustomShortCut 或者 PreviousFunctions 這樣的命名。而為什麼 EditorUtil 更好,那麼這個以後會專門講,現在呢,我們就先這樣做就好了。

檔案名改完之後,目錄結構如下圖所示.

Unity 遊戲架構搭建 2019 (三十三) 代碼檔案命名

這樣完整的第八個示例,就全部整理完了,通過第八個示例整理出來了第三個示例。删除了很多備援代碼,很有成就感。

今天的内容就這些。拜拜~

轉載請注明位址:涼鞋的筆記:liangxiegame.com

更多内容

  • QFramework 位址:https://github.com/liangxiegame/QFramework
  • QQ 交流群:623597263
  • Unity 進階小班:
    • 主要訓練内容:
      • 架構搭建訓練(第一年)
      • 跟着案例學 Shader(第一年)
      • 副業的孵化(第二年、第三年)
    • 權益、授課形式等具體詳情請檢視《小班産品手冊》:https://liangxiegame.com/master/intro
  • 關注公衆号:liangxiegame 擷取第一時間更新通知及更多的免費内容。