C#特色语法(部分是 Unity 支持的)

特别两个关键字

ref

  • 引用传递
  • 跟 C++的引用传递是一样的

out

  • 从字义理解它是想把值传到外面来
  • 是引用参数

差异

  • 用途上不一样,在一定意义上 ref 是可以替代 out
  • 值初始化方式,out 的值在外部并不处理,只是提供地址

特色点

Delegate

  • 直接代理方法
  • 可以直接合并多个操作
  • 直接+-操作

Coroutine

  • 启动后根据返来的 IEnumerlator 来选择 Resume
  • 跳出协程 yield break;
  • 下一帧 yield return null;
  • 延迟一段时间 yield return new Delay
  • 根据指定条件 yield return new WaitUtil(() => {return condition;});
  • 可以嵌套其它 IEnumerator

Atribute p

  • 有点像宏定义
  • 提前声明一些结编译器知道的内容,会比宏看起来更直观一些

Indexer

  • 把索引进一步的抽象出来

Property

  • 跟 objc 的有点像,但写法不一样

Unity

界面的处理

脚本的挂载方式,直接通过 C#(LuaBehaviour)

直接在 Lua 里面搞

几个路径说明

路径 可读写 说明 Editor android ios
Application.dataPath 只读 相当是游戏根目录 Assets apk 目录 xxx.app/Data
Application.streamingAssetsPath 只读 存放一些二进制文件 StreamingAssets assets xxx.app/Data/Raw
Application.persistentDataPath 可读写 本地存储,即下载位置 运行时生成 data/files/ Documents
Application.temporaryCachePath 临时数据缓存目录 data/cache Library/Caches

Camera

透视模式

转化屏幕坐标时候得注意 z 轴的距离

层级管理

Sort Layer

可以定义自己 Layer 是第一级排序,在 Layer 里面还可以进行二级排序

Pixels Per Unit

资源导入时候设置

  • UI 一般默认用 100
  • TileMap 则根据块大小,一般是设置为与块大小一致比如(64*64)设置为 64

xLua