按以下順序調用
Function | 調用時機 |
---|---|
onLoad | 腳本初始化時調用 |
onEnable | 組件的 enabled 屬性從 false 變為 true 時調用 |
start | 組件第一次激活時調用 |
update | 每一幀渲染前更新物體調用 |
lateUpdate | 在所有組件的 update 都執行完之後調用 |
onDisable | 組件的 enabled 屬性從 true 變為 false 時調用 |
onDestroy | 組件或者所在節點銷毀時調用 |
pseudo code
cocos
CHAR
可能較佳tsconfig.json
@property({ type: AnimationComponent })
在大多情況下直接寫成 @property(AnimationComponent)
即可.只要符合
GroupA & MaskB > 0
GroupB & MaskA > 0
A 與 B 才會檢測碰撞
範例
Cube:
Layer = 4
Group = 272// (1 << 4) + (1 << 8)
Mask = 256Plane 的 Layer
Plane:
Layer = 8
Group = 272// (1 << 4) + (1 << 8)
Mask = 16Cube 的 Layer
在這個情況下,Cube與Plane可以互相碰撞,但是無法與其他物體的 Collider 碰撞
問題
rigidbody A -> isKinematic = false
rigidbody B -> isKinematic = true
A 完全靜止時, B 接觸到 A 會直接穿過去
解法
避免讓 A 進入休眠 (回收再強制設成休眠)
打開 .gitignore
在 Cocos Creator 3D Project 區塊新增
當我們需要引用特定 module 時
但如果我們需要引用到多個 module 時
一來看起來不夠整潔,二來很麻煩(你必須要指定每個 module path)
這時候可以透過集合 module(若這些 module 隸屬於同一體系,類似同一個 namespace 的概念)
來讓外部取用方便些
這時引入 myModule 就可以直接使用那些零碎的 module
或者是
上面的集合 Module 還是有一個不方便的地方,就是路徑問題,
要引用 Module 還得知道他的存放位置,若結構深一點看起來也很醜
為了解決這個問題,可以透過 tsconfig 設定路徑 map
設定完就可以直接透過名稱取用
也可以指定資料夾位置
PS.以上寫法在純TypeScript專案正常,但cocos專案會噴錯
假設如下code
aModule內容:
bModule內容:
myModules錯誤的格式
不論tsconfig怎麼設定paths都會噴錯 Uncaught (in promise) Error:: Error loading xxx
正確的內容:
測試tsconfig的設定
測試1:
tsconfig設定用如下的編譯路徑:
執行結果正常
測試2
tsconfig設定用如下的編譯路徑:
執行結果正常
測試3
tsconfig設定同時使用範例1和2的編譯路徑:
會出現如下錯誤:
[Scene] Possible circular-reference in {asset(db://assets/Module/aModule.ts)}:
when import Module from myModules.
[Build] Error: Error loading project:///assets/Module/myModules.js
from project:///assets/Module/myModules.js
PS. 一旦出現上述錯誤,直接修改code到正常版本,並執行也不會正常。
需重新啟動Creator 3D
參考連結:
Path Mapping
Path Aliases
CC Manual
Creator3D