ECS初学者に向けてのTips集


2018/10/23に開催した「[Unity ECS完全に理解した](https://connpass.com/event/101774/)」と言う勉強会にて登壇した際の発表資料です。
スライド中のリンクが多くなった為、ほぼ個人用に纏め直したリンク一覧のメモみたいなものですが折角なので公開。

**[スライドはこちら](https://speakerdeck.com/mao_test_h/ecschu-xue-zhe-nixiang-ketefalsetipsji)**

※記事中にスライドを埋め込みたかったけど対応していなかった....:innocent:
※[GoogleSlideの方](https://docs.google.com/presentation/d/11ej0BfUxs7eyFeGGplJJR5v-UgVAZt-L-1EBCLLw5FA/edit)でも公開しているが、プレゼンモードで見ないとレイアウトのズレがある...:innocent:



# ▽ 初学者向け おすすめ資料リンク集

- **[【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能](https://www.slideshare.net/UnityTechnologiesJapan/gtmf2018tokyounity3)**

-  **[【Unity】Entity Component System入門(その1)【2018.2】](https://qiita.com/pCYSl5EDgo/items/caac60ee41058cde085a)**  
  
- **[Unity:はじめてのECS](https://qiita.com/simplestar/items/17b0886be0170f79aa2e)**  

- **[EntityComponentSystemSamples/Documentation](https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/Documentation/index.md)**
    - ※公式ドキュメント(参考サイトとは少し違うかもしれないが一応貼っておく)





# ▽ ECSの描画について

- **[【Unity】PureECSの描画周りについて解説してみる](https://qiita.com/mao_/items/c4a217b33a0a94d5d52f)**
    - デフォルトで入っているMeshInstanceRendererSystemを使用する前提で書いた解説記事

### ※その他

- [Graphics.DrawMesh](https://docs.unity3d.com/ScriptReference/Graphics.DrawMesh.html)
- [Graphics.DrawMeshInstanced](https://docs.unity3d.com/ScriptReference/Graphics.DrawMeshInstanced.html)
    - ※MeshInstanceRendererSystemの内部にて呼び出されているAPI。シェーダー(マテリアル)がGPU Instancingに対応していたら後者が呼び出される。





# ▽ アニメーションについて

- **[Unity-Technologies/EntityComponentSystemSamples/Samples](https://github.com/Unity-Technologies/EntityComponentSystemSamples/tree/master/Samples)**
    - 頂点シェーダーのみによるアニメーションの例(魚の動き)
        - ※"Assets/Scenes/BoidExample.unity"を参照

- **[mao-test-h/ECS-AnimationSample](https://github.com/mao-test-h/ECS-AnimationSample)**
    - 自分が作成したECSでのアニメーション制御の例

- **[Unity-Technologies/UniteAustinTechnicalPresentation](https://github.com/Unity-Technologies/UniteAustinTechnicalPresentation)**
    - キャラのアニメーション周りはAnimationInstancingで実装されてい
    - 参考 : [【Unity】ECSを使用した大規模なデモプロジェクト "Unite Austin Technical Presentation" -> キャラクターアニメーションは頂点シェーダー](http://tsubakit1.hateblo.jp/entry/2018/04/27/023856#%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E9%A0%82%E7%82%B9%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC)

- **[sugi-cho/Animation-Texture-Baker](https://github.com/sugi-cho/Animation-Texture-Baker)**
    - アニメーションに於ける頂点の位置と法線をTextureに保存するもの。
        - ※上記のECS-AnimationSampleにて使わせて頂いている。
    - 参考 : [【Unity】シェーダーで3Dモデルのアニメーションを行う Animation Texture Baker](http://tsubakit1.hateblo.jp/entry/2017/09/03/225713)

### ※その他

- [Graphics.DrawMeshInstancedIndirect](https://docs.unity3d.com/ScriptReference/Graphics.DrawMeshInstancedIndirect.html)
    - ※ECS-AnimationSampleにて説明もなくしれっと使用しているAPI




# ▽ 衝突判定について

- **[【CEDEC2018】CPUを使い切れ！ Entity Component System（通称ECS） が切り開く新しいプログラミング](https://www.slideshare.net/UnityTechnologiesJapan/cedec2018cpu-entity-component-systemecs)**
    - ※こちらの「16. コリジョンを作ってみた」(108ページ～)にて自作コリジョンについての解説がある。
        - **[講演動画はこちら](https://www.youtube.com/watch?v=CVkj4BduUr0)**

- **[Unity-Technologies/AnotherThreadECS](https://github.com/Unity-Technologies/AnotherThreadECS)**
    - 上記講演のリポジトリ

- **[【Unity】PureECSの衝突判定周りについて解説してみる](https://qiita.com/mao_/items/ad8a09a9c6403a2e84cf)**
    - 上記の講演内容を参考に自分の方でまとめてみた記事





# ▽ その他

- **[【Unity】ECSの「Disabled ComponentData」と「Prefab ComponentData」について解説してみる](https://qiita.com/mao_/items/89306846075f65ce6b50)**
    - 表題の通り、PureECSに於ける「Disabled ComponentData」と「Prefab ComponentData」の解説

- **[【Unity】ECSで弾幕STGを作ってみたので技術周りについて解説](https://qiita.com/mao_/items/6ad28fc20dda77364e39)**
    - 以前ゲームジャムにてPureECSで実装した弾幕STGについての解説記事。
        - **※ECSの変更の影響で実装が古くなっているので注意**

- **[【Unity】ECS + JobSystemで10万個のドカベンロゴをアニメーションさせてみた](https://qiita.com/mao_/items/4951c4bf0c82de98b5d6)**
    - ドカベンロゴを支える技術
        - **※こちらも変更の影響で実装が古い & かなり初期の頃に書いた記事なので内容的にも見直せる点はあるかもしれない記事**