您的位置:首页 > 移动开发 > Unity3D

Unity C# 规范

2015-07-28 17:35 197 查看
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. 如果没有特别的必要尽量少使用委托和事件,会带来调试上的麻烦;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: