Unity C# 規範

1. 掛載場景GameObject上的腳本才繼承自 MonoBehaviour 否則,不繼承(即使在邏輯上會調用 Destroy,也不可以);
2. 結構儘量使用struct,而不用class(內存和效率上差1/3);
3. 一個類裏不能有超過1個class,這個class的名字要和文件名一致;
4. 保證類文件是 UCS-2 little end格式保存;
5. 不要有超過2K行的代碼類存在;
6. 繼承自MonoBehaviour的無構造函數;
7. 字符串處理得多的時候要注意使用String 還是 StringBuilder初始化時賦String.Empty
8. enum 只有首個賦值或不賦值;
9. 不可以使用goto、不可以重載操作符;
10. switch後必須有default;
11. 詳細的見下代碼:

using UnityEngine;
using System;
using System.Collections;
/********************************************************************************
** 作者: Simon
** 創始時間:2015-7-28
** 修改人:XXX
** 修改時間:xxxx-xx-xx
** 描述:
**    動畫類   類名和函數名用駱駝命名法  常量全部大寫
*********************************************************************************/
public class AnimalControl : MonoBehaviour
{
    /// <summary>
    /// 動畫 - 類變量下劃線加Pascal命名法
    /// </summary>
    private Animator _animator;
    /// <summary>
    /// 外部操作參數
    /// </summary>
    public int _paramNum { get; set; }
    /// <summary>
    /// 在界面面板設置的值 默認爲0 如果在場景擺放就能確定的 一定要這樣寫 不要動態初始化
    /// </summary>
    [SerializeField]
    private int _paramSet = 0;
    void Start()
    {
        _animator = gameObject.GetComponent<Animator>();
        // 不可能在遊戲運行時會發生的錯誤 使用這種處理方式
        Debug.Assert(_animator != null);
        // 未知事件處理使用這種處理方式
        try
        {
            int temp1 = 3;
            int temp2 = 1 / (3 - temp1);
        }
        catch(Exception ex)
        {
            // 如果是遊戲邏輯錯誤 UI層彈出界面報錯 否則使用如下
            Debug.LogError(ex.Message);
        }
    }
}
這樣,命名規則、括號位置、大小寫注意、異常處理、公有屬性處理、參數和函數位置、註釋方法就都有了;

12. 繼承自MonoBehaviour 的單例模式,要注意對象的生存週期,和賦初始值的時間;
13. File是否存在的處理在安卓下是無效的,就不要用了,IO操作都用www處理;
14. 如果能用組合的地方,就不要用繼承實現。另外軟件架構儘量採用組件的方式去解決;
15. 如果沒有特別的必要儘量少使用委託和事件,會帶來調試上的麻煩;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章