diff Paper/chapter/4-WorkingInUnity.tex @ 30:2a9f335e45bd

add source code and update Unity chapter
author riono <e165729@ie.u-ryukyu.ac.jp>
date Fri, 04 Feb 2022 20:47:04 +0900
parents 03402185cb9c
children 4cb0634a79ff
line wrap: on
line diff
--- a/Paper/chapter/4-WorkingInUnity.tex	Fri Feb 04 17:57:03 2022 +0900
+++ b/Paper/chapter/4-WorkingInUnity.tex	Fri Feb 04 20:47:04 2022 +0900
@@ -1,20 +1,48 @@
 \chapter{Christie SharpのUnity上での動作}
 
+\section{Unity API}
+Unityでは、ゲーム開発を行うためのライブラリとしてUnity APIが公開されている。
+ソースコード\ref{src:UnityExample}はUnity APIを使用したスクリプトの例である。
+Spaceキーを押し続けている間、playerObjectは物理演算に従って、毎フレーム$\vec{A} = (10, 5, 10)$だけ力を加えられ移動する例である。
+4行目では変数が初期化されていないまま使用されているように見えるが、Unityではpublic修飾子を使用するとUnityのエディタ上で事前に変数に代入することが可能になる。
 
-\section{Unity API}
+\lstinputlisting[label=src:UnityExample, caption=Chrisite SharpにおけるStartCodeGearの記述例]{src/Unity/UnityScriptExample.cs}
+
+Unity APIではC\#にはないVector3やGameObject、Rigidbodyなどの特別な型があり、これらはUnityEngineをusingすることで使用可能である。
+またMonoBehaviourを継承することによって、StartメソッドやUpdateメソッドなどのUnity上で決められた、あるタイミングで呼び出される関数を使用することが可能である。
+
+
+Startメソッドはゲームの開始時、1フレーム目が始まる前に1回だけ実行され、主に初期化に使用されることが多い。
+今回はplayerObjectに付与されている物理演算のComponentであるRigidbodyを取得している。
+
+
+UpdateメソッドはStartメソットの実行後に毎フレーム呼び出される関数であり、ゲームのメインロジックで使用されることが多い。
+15行目ではキー入力の有無を確認しており、Spaceキーの入力を監視している。
+続く16行目では、Startメソッドにて取得したRigidbodyに対して、3次元ベクトルを力として与えている。
+これを行うことによって、Spaceキーを押している間$\vec{A} = (10, 5, 10)$がplayerObjectに与えられ、playerObjectは物理演算に従って移動する。
+
+
+UnityではStartメソッドやUpdateメソッドがある代わりに、C\#の一般的な実行メソッドであるMainメソッドによる処理の開始ができない。
+そのため、Unityで処理を行うためには、MonoBehaviourにより提供されているメソッドを通して処理を実行する必要がある。
 
 
 \section{StartCodeGearを使用しないChristie Sharpの実行}
 % 例題など
+% やったこと全部書いたほうがいい/できたこと
+% 多重継承の話
+% LateUpdateの話
+Chrisite SharpではStartCGにMainメソッドを記述してChrisite Sharpを実行したが、Unityで動作させるためにはStartメソッドやUpdeteメソッドを使用す必要がある。
+そのため、Chrisite Sharpの実行にStartCGを使用せずに実行できるよう変更を行った。
+
+\lstinputlisting[label=src:CountUpScript, caption=Unit上でのChrisite Sharpの実行Script]{src/Unity/CountUpScript.cs}
+
+ソースコード\ref{src:CountUpScript}では、StartCGを使用せずに、Unity APIであるStartメソッドよりChrisite Sharpを実行している。
+StartCGは、CGMの初期化や処理の開始位置を明確化させるためのクラスであるため、Christie Sharpの実行に必須ではない。
+また、C\#では多重継承が禁止されている。そのため、StartCGを継承しつつ、MonoBehaviourを継承してStartメソッドを使用する、と言うことはできない。
+そのため可読性が下がってしまう可能性はあるが、CGMの初期化やSetupメソッドを直接Startメソッド内に記述できる。
 
 
 
 
 
 
-
-
-
-
-
-