Mercurial > hg > Papers > 2022 > riono-master
changeset 35:e33201b0018d
update Unity chapter
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Feb 2022 14:38:41 +0900 |
parents | 6a53740dd200 |
children | a60e8d536a28 |
files | Paper/Makefile Paper/chapter/4-WorkingInUnity.tex Paper/master_paper.pdf |
diffstat | 3 files changed, 28 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/Makefile Sat Feb 05 17:00:13 2022 +0900 +++ b/Paper/Makefile Sun Feb 06 14:38:41 2022 +0900 @@ -29,7 +29,7 @@ $(BIBTEX) $(TARGET) -$(MAKEINDEX) $(TARGET) @echo "\t second..." - $(LATEX) $(TARGET) + $(LATEX) $(TARGET) > /dev/null open:$(TARGET).pdf
--- a/Paper/chapter/4-WorkingInUnity.tex Sat Feb 05 17:00:13 2022 +0900 +++ b/Paper/chapter/4-WorkingInUnity.tex Sun Feb 06 14:38:41 2022 +0900 @@ -118,7 +118,33 @@ 以上のテストにより、Chrisite Shrapの機能が問題なくUnity上でも機能することが確認できた。 \section{UnityでのChrisite Sharpの役割} +% GameObjectをDGにする +% GameObjectを継続にする +% 並列部分をChristieでやる +% 実装するには何が必要? どう言う考えが必要? UnityでCodeGearを動作させる場合、特にUnity APIを使用して処理を行う際は、MainThreadDispatcher.Postメソッドを利用してMain Threadに処理を以上する必要がある。 他方、UnityではUpdateメソッドやFixedUpdateメソッドなどUnityの実装に従って、フレーム単位や時間単位でのメソッド呼び出しが保証されている。 -CG内でMainThreadDispatcher.Postメソッドを使用しGameObjectの移動などのUnity APIを利用した処理を行うことで、処理が行われるタイミングが不安定になることが考えられる。 +CG内でMainThreadDispatcher.Postメソッドを使用しGameObjectの移動などのUnity APIを利用した処理を行うことで、処理が行われるタイミングが不安定になることがあると考えられる。 + +そこで、ネットワーク上で通信が必要なものだけをChrisite Sharpで通信を行い、受信データをMonoBehaviourを継承したクラスで処理・動作させるという方法を考えた。 +Unityには非同期処理としてCoroutineやTaskなどがあるが、シングルスレッドでの動作を前提として利用されている。 +この手法を取ることにより、Unity上の処理を行うタイミングが保証されると共に、 +並列処理やデータのやり取りをChristieに一任することができ、Multi Threadによる並列処理が可能となる。 + +またUnity上で操作、処理を行っているGameObject自体をDGに継続にする、直接的にはDGにすることによってより並列処理などを意識することなくゲーム開発が可能となる。 +GameObject自体をDGにすることにより、通信に必要なデータを送信するためのコードを書かずに待ち合わせが可能となる。 +また、待ち合わせを行っていることによりデータがNullのまま処理を開始することがなくなる。 +位置などの毎フレーム必要なデータや、画面の描画に必要なデータはPeekで取得を行うことで、通信が途中で途切れてしまった場合でもその直前のデータは参照可能であり、 +接続の復帰も行いやすいと考えられる。 + + + + + + + + + + +