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. 如果没有特别的必要尽量少使用委托和事件,会带来调试上的麻烦;
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. 如果没有特别的必要尽量少使用委托和事件,会带来调试上的麻烦;
相关文章推荐
- Unity查找脚本被哪些Perfab或场景引用
- 09应用输入经理旋转场景--《猿学校课程Unity3d》
- Unity协程(Coroutine)原理深入剖析再续
- Unity笔记 SPACE SHOOTER 实例详解
- Unity时钟定时器插件——Vision Timer源码分析之一
- Unity协程(Coroutine)管理类——TaskManager工具分享
- kbengine 0.65 读unity3d demo的笔记
- [Unity基础]unity5中的动画系统(一)
- unity tips
- unity tips
- [Unity] Android插件
- 噩梦5 camera跟随
- Unity NGUI灰化Shader
- Unity3d在移动设备上的音效有延迟的解决方案
- How to use Autofac IoC Container with Unity 3D?
- Unity3d录音
- 小韵游戏开发学习笔记——第三期:Unity工程创建及界面功能的基本介绍
- Unity笔记 脚本执行顺序 life and times
- 小韵游戏开发学习笔记——第二期:初识Unity3D
- UnityShader:HSV(色相,饱和度,亮度)转换