Unity 开发最常用
| 缩写 | 用途 | 展开结果 |
|---|---|---|
log | Debug.Log | UnityEngine.Debug.Log(...); |
logvar | 打印变量名和值 | Debug.Log("var = " + var); |
logwarn | Warning | Debug.LogWarning(...); |
logerr | Error | Debug.LogError(...); |
logex | Exception | Debug.LogException(...); |
bsample | Profiler BeginSample | Profiler.BeginSample("..."); |
esample | Profiler EndSample | Profiler.EndSample(); |
sfield | [SerializeField] 字段 | [SerializeField] private Type name; |
sprop | SerializeField + Property | 序列化字段 + 属性 |
reqcomp | [RequireComponent] | [RequireComponent(typeof(...))] |
menuitem | [MenuItem] | Unity Editor 菜单项 |
assetmenu | [CreateAssetMenu] | ScriptableObject 创建菜单 |
cor | Coroutine | IEnumerator Xxx() { ... } |
这些是我认为 Unity 程序员最应该优先记住的一组。官方文档中的 Unity 模板包括 log、logvar、logwarn、logerr、logex、sfield、sprop、reqcomp、menuitem、assetmenu、cor 等。
C# 高频模板
| 缩写 | 用途 |
|---|---|
foreach | foreach 循环 |
for | 普通 for 循环 |
forr | 反向 for 循环 |
itar | 遍历数组 |
ritar | 反向遍历数组 |
itli | 遍历 IList<T> |
if | if |
else | else |
switch | switch |
while | while |
do | do...while |
try | try/catch |
tryf | try/finally |
lock | lock |
using | using |
prop | 自动属性 |
propg | get; private set; 属性 |
ctor | 构造函数 |
class | class |
struct | struct |
interface | interface |
enum | enum |
namespace | namespace |
thr | throw new |
sfc | 安全类型转换 as + null check |
这些都是 Rider 官方预置的 C# 模板。
还有几个比较实用的
| 缩写 | 用途 |
|---|---|
nguid | 生成 GUID |
ctx | 当前代码上下文 |
ear | 创建空数组 |
#region | 创建 region |
#if | 创建条件编译 |
asrt | Debug.Assert |
asrtn | Assert 非 null |
out | Console.WriteLine |
outv | 打印变量 |
psr | public static readonly |
pci | public const int |
pcs | public const string |
nguid、ctx 这类属于不一定天天用,但记住后很方便的模板。
DOTS / ECS 专用
如果你做 Unity DOTS,这几个也值得记:
| 缩写 | 用途 |
|---|---|
baker | 生成 Baker<T> |
componentdata | IComponentData |
jobentity | IJobEntity |
例如 componentdata 会直接生成:
public struct MyComponent : Unity.Entities.IComponentData
{
}
baker 则会生成对应的 Baker<T> 基础结构。
我建议你实际只背这一套
如果你的目标是提高 Unity Rider 编码速度,而不是把官方列表全部背下来,我会按下面的优先级:
第一梯队——每天都可能用
log
logvar
logwarn
logerr
sfield
cor
foreach
for
if
prop
ctor
try
第二梯队——Unity 项目中很有价值
sprop
reqcomp
menuitem
assetmenu
bsample
esample
forr
switch
lock
nguid
第三梯队——特定场景
logex
itar
ritar
itli
sfc
propg
#region
#if
baker
componentdata
jobentity
尤其是你做 Unity 的话,我会重点形成这样的肌肉记忆:
sfield → [SerializeField]
sprop → SerializeField + Property
cor → Coroutine
log → Debug.Log
logvar → Debug.Log("xxx = " + xxx)
logwarn → Debug.LogWarning
logerr → Debug.LogError
bsample → Profiler.BeginSample
esample → Profiler.EndSample
reqcomp → RequireComponent
menuitem → MenuItem
assetmenu → CreateAssetMenu