0304実習
Property
C#では、Propertyでget setを簡単に設定して使用できます.
ソース:https://blog.hexabrain.net/153
readonlyとconstの違い
const
コンパイルタイプの定数です.(コンパイル時にcont変数の値を取得します.)
組み込みデータ型(整数、実数、Enum、String)のみ使用可能です.
変数宣言と同時に値を割り当てる必要があります.
メモリ割り当て位置はスタックメモリです.ただし、静的宣言を行うと、Heap Memoryに保存できます.
readonly
運転時定数(exeまたはdllを使用して変数の値を取得します.)
作成と同時に初期化することなく、すべてのデータ型に使用できます.
ただし,ジェネレータ段階では,1回の割当てでしか初期化できない.
メモリの割り当て先はHeap Memoryです.
ソース:https://holjjack.tistory.com/95
region
#region#endregionを使用すると、コードを簡単に作成できます.
ショートカットをすべてオン/オフ:CTRL+M+L
長い部分をDefalt,Properties,Constructor,methodなどの意味で地域化する.
Serializable
Jsonを使用するにはシリアル化が必要なので、クラスシリアル化を行います.
publicとして宣言されたメンバーはシーケンス化されており、private変数はserializableとして宣言されたときにUnity Inspectorで変更され、GameObject Prefabをtxtとして開いたときに確認および変更できます.
シーケンス化は、オブジェクトフィールドに格納されている値をメモリに格納できるように変更します.
シリアル化するクラスの上に[シリアル化可能]と宣言します.
メモリに格納できるフォーマットは、Stream、BinaryFomatterクラスを使用して格納できます.
シリアル化したくないフィールドがある場合は[NonSerialized]と宣言します.
Interface
インタフェースで表現される理由は多形性である.クラスは1つしか継承できませんが、インタフェースは複数を継承できます.したがって、他のクラスでも使用できると思う場合は、インタフェースを作成します.
パラメータ作成インタフェースにより、継承されたすべてのクラスのインスタンスを取得できます.
UML Dependancy
UML作成時にメソッドからのみクラスをパラメータとして取得する場合、クラスは関連付けではなく依存依存依存性として表示されます.
この場合、クラスは関連付けられていませんが、関数の実行時にのみ関連付けられます.
抽象と仮想
メソッド宣言でabstractまたはvirtualを使用すると、すべてのサブクラスがメソッドを上書きできることを示します.
両者の違いはabstractは絶対にbodyを定義できないがvirtualはbodyを定義できることである.
Coroutine
UnityがCoルーチンを使用するのは,動的環境で非同期アクティビティを作成するためである.Updateでwhile文を切り替えると、実行が続行され、リソースが食べられますが、Coルーチンを使用すると、一定時間(例では1秒)ごとに実行されるか、フレームが停止して実行されます.
Unityダイナミックゲーム
Unityでダイナミックゲームを作成する場合、Unity画面でGameObjectを生成してコードを貼り付ける方式で作成するのは難しい.したがって、Script環境でGameObjectを作成し、Unityのプレフィックスを使用してGameObjectを作成および制御します.
関連コード
シリアル化はいつ使用しますか?
boxing UnBoxing?
C#では、Propertyでget setを簡単に設定して使用できます.
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
宣言 student.Age = 13;
student.Name = "로버트 할리";
student.Name = "김철수";
Console.WriteLine("저의 이름은 " + student.Name + "이고, 나이는 " + student.Age + "살 입니다.");
実行ソース:https://blog.hexabrain.net/153
readonlyとconstの違い
const
コンパイルタイプの定数です.(コンパイル時にcont変数の値を取得します.)
組み込みデータ型(整数、実数、Enum、String)のみ使用可能です.
変数宣言と同時に値を割り当てる必要があります.
メモリ割り当て位置はスタックメモリです.ただし、静的宣言を行うと、Heap Memoryに保存できます.
readonly
運転時定数(exeまたはdllを使用して変数の値を取得します.)
作成と同時に初期化することなく、すべてのデータ型に使用できます.
ただし,ジェネレータ段階では,1回の割当てでしか初期化できない.
メモリの割り当て先はHeap Memoryです.
ソース:https://holjjack.tistory.com/95
region
#region#endregionを使用すると、コードを簡単に作成できます.
ショートカットをすべてオン/オフ:CTRL+M+L
長い部分をDefalt,Properties,Constructor,methodなどの意味で地域化する.
Serializable
Jsonを使用するにはシリアル化が必要なので、クラスシリアル化を行います.
publicとして宣言されたメンバーはシーケンス化されており、private変数はserializableとして宣言されたときにUnity Inspectorで変更され、GameObject Prefabをtxtとして開いたときに確認および変更できます.
シーケンス化は、オブジェクトフィールドに格納されている値をメモリに格納できるように変更します.
シリアル化するクラスの上に[シリアル化可能]と宣言します.
メモリに格納できるフォーマットは、Stream、BinaryFomatterクラスを使用して格納できます.
シリアル化したくないフィールドがある場合は[NonSerialized]と宣言します.
[Serializable]
class MyClass
{
public int MyFiled1;
public int MyFiled2;
[NonSerialized]
public int myField3; // 이 필드만 직렬화가 안됨
public int myField4;
}
ソース:https://qzqz.tistory.com/254Interface
インタフェースで表現される理由は多形性である.クラスは1つしか継承できませんが、インタフェースは複数を継承できます.したがって、他のクラスでも使用できると思う場合は、インタフェースを作成します.
パラメータ作成インタフェースにより、継承されたすべてのクラスのインスタンスを取得できます.
UML Dependancy
UML作成時にメソッドからのみクラスをパラメータとして取得する場合、クラスは関連付けではなく依存依存依存性として表示されます.
この場合、クラスは関連付けられていませんが、関数の実行時にのみ関連付けられます.
抽象と仮想
メソッド宣言でabstractまたはvirtualを使用すると、すべてのサブクラスがメソッドを上書きできることを示します.
両者の違いはabstractは絶対にbodyを定義できないがvirtualはbodyを定義できることである.
Coroutine
UnityがCoルーチンを使用するのは,動的環境で非同期アクティビティを作成するためである.Updateでwhile文を切り替えると、実行が続行され、リソースが食べられますが、Coルーチンを使用すると、一定時間(例では1秒)ごとに実行されるか、フレームが停止して実行されます.
Unityダイナミックゲーム
Unityでダイナミックゲームを作成する場合、Unity画面でGameObjectを生成してコードを貼り付ける方式で作成するのは難しい.したがって、Script環境でGameObjectを作成し、Unityのプレフィックスを使用してGameObjectを作成および制御します.
関連コード
public class Tester : MonoBehaviour
{
[SerializeField]
int a = 5;
public int b = 5;
[SerializeField]
GameObject prefab;
private void Awake()
{
StartCoroutine("SimulationCoroutine");
}
// Start is called before the first frame update
void Start()
{
Debug.Log(a);
var obj = Instantiate(prefab);
obj.transform.SetParent(transform);
}
int frameCount = 0;
// Update is called once per frame
void Update()
{
Debug.Log($"FrameCount : {frameCount++}");
}
public IEnumerator SimulationCoroutine()
{
int turn = 0;
while(true)
{
Debug.LogError($"turn : {turn++}");
yield return new WaitForSeconds(1.0f);
}
}
}
疑問点シリアル化はいつ使用しますか?
boxing UnBoxing?
Reference
この問題について(0304実習), 我々は、より多くの情報をここで見つけました https://velog.io/@mandy9766/0304-인턴십テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol