天天看點

Unity 遊戲架構搭建 2019 (三十二) 類的命名

昨天我們完成了第八個示例的第二個 MenuItem 菜單順序的調整。

我們今天再往下接着調整。

我們來看下接下來的 MenuItem

代碼如下:

[MenuItem("QFramework/8.總結之前的方法/3.生成檔案名到剪切闆")]
		private static void MenuClicked3()
		{
			CommonUtil.CopyText(Exporter.GenerateUnityPackageName());		
		}
           

CommonUtil 已經提取成第二個示例了。

Exporter.GenerateUnityPackageName() 這個方法的定義在第八個示例 PreviousFunctions 類的上方。它屬于專門為導出功能定制的代碼,也就是在其他情況下不适用的。

而這個 MenuItem 本身呢,現在沒有太大的用處。有用的部分是 Exporter.GenerateUnityPackageName 的方法定義和所在的類。

是以這個 MenuItem 就直接删除了。

删除之後,我們把 Exporter 這個類移動到第一個示例裡,因為第一個示例是導出功能所在的地方,Exporter 類呢本身就是一個導出功能的一部分。

第一個示例原來的代碼如下:

using System.IO;

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
	public class CustomShortCut : MonoBehaviour
	{
#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
	}
}
           

移動 Exporter 類之後變成如下:

using System;
using System.IO;

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{	
	public class Exporter
	{
		public static string GenerateUnityPackageName()
		{
			return "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh");
		}
	}
	
	public class CustomShortCut : MonoBehaviour
	{
#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
	}
}
           

到這裡,我們發現,Exporter 類可以和 CunstomShortCut 類進行合并,合并之後的類名是 Exporter,而代碼的檔案名改成了 Exporter.cs。

代碼如下:

Exporter.cs

using System;
using System.IO;

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{	
	public 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");
		}
	}
}
           

目錄結構如下:

Unity 遊戲架構搭建 2019 (三十二) 類的命名

這樣第八個示例的第三個 MenuItem 就整理完畢了。

小結

其實在整理第一個示例的時候,第一個示例的類的名字 CustomShortCut 就有很大的問題。我們第一個示例的功能是 導出 UnityPackage,類名卻叫 自定義快捷鍵,這樣比較奇怪。但是當時沒有發現,因為隻去關注菜單名是否和檔案夾名是否一緻了,沒有考慮類名是否合理。

是以呢,我們的規範和約定要加入上一個條例:

  1. 要給類/代碼檔案取合适的命名。

加上之後如下:

約定和規則:

  • 每個示例在 QFramework 目錄下建立一個檔案夾,檔案夾的格式是: 數字.示例的功能
    • 每個示例寫一個腳本,腳本中包含可複用的靜态方法和 MenuItem 方法。
    • 每寫一個示例進行一次導出,導出的檔案名後邊加上日期和時間,這個功能已經在導出功能裡内置了。
    • 每次有 API 變更的時候做一次備份,備份的名字采用 QFramework_vX.Y.Z 格式。
    • 每次進行整理的時候要確定是在功能有效的情況下進行删除和變更。
    • 確定菜單名和檔案夾名一緻(新增)
    • 要給類/代碼檔案取合适的命名(新增)
    • 在删除棄用代碼的步驟:
      1. 消除棄用警告。
      2. 搜尋棄用方法的引用,并逐個更新為最新的方法。
      3. 全局搜尋方法名,并根據情況逐個更新為新的方法。

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

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

更多内容

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