Unity 編
オブジェクトのコンポーネントを取得する方法1:GetCompornent
以下で取得できる。
[型] [名前A] = GetCompornent<"対象のコンポーネント名">();
[名前A]. [ コンポーネント内で使用されている関数] ();
オブジェクトのコンポーネントを取得する方法2:パブリックで宣言してUnity内で取得する
パブリックでGameObjectを宣言。
UnityのInspector側で、コンポーネントにアクセスしたいものをD&Dで適応。
そののち、
[パブリック変数名].[型]
で呼び出せるようになるので、自由に使用する;
当たり判定の設定方法
当たり判定をつけたいオブジェクトに対して、collider
コンポーネントを適応(基本デフォでされてるっぽい)。
Rigidbody
というものを処理させたいオブジェクトにつけて(Playerとか、処理されるスクリプトがつくオブジェクトに)以下の関数で処理ができる。これは決まった呪文。
private void OnCollisionEnter(Collision collision)
{
Debug.Log("");
}
しかしこのまま実行すると、オブジェクトに物理演算であるEigidbody
の数値適応されて摩擦とかが計算されて、すり抜けづらくなる。
ある一定の領域に入ったときに~という処理にする場合などは、toriger
を活用する。
Triggerの適応方法
private void OnTriggerEnter(Collider other)
{
Debug.Log("");
}
オブジェクトの移動
transform.position += new Vector(0,0,0);
キーボード入力
Vec3f Hensu;
float Hensu.x = Input.GetAxisRaw("Holizontal"); //横矢印キー or "A"か"D"
float Hensu.z = Input.GetAxisRaw("Vertical"); //縦矢印キーor"W"か"S"
シーンを読み込みなおしたい、シーン移動したい場合
冒頭に以下を宣言してシーン系を操作できるようにする。
using UnityEngine.SceneManagement;
そのうえで、
SceneManager.LoadScene("シーンの名前を宣言");
でいける。
C# 編
2で割り切れる数(偶数)の場合、という条件分岐
if([対象の変数] %2 == 0){}
2で割り切れない数(奇数)の場合、という条件分岐
if([対象の変数] %2 == 1){}
Switchの分岐の作り方
##switch([変数]){
case"[変数]=2"
[処理を記載する]
break;
case"[変数]=5"
[処理を記載する]
break;
for文内で、特定条件内で分岐を抜ける方法
break;
という記述を入れればループが終了。
以下の場合、i=7の時、ループが終了する。
for(int i = 0; i <= 0; i++){
if(i == 7){
break;
}
}
continue;
という記述を入れればスキップする。
以下の場合、i=7の時、処理がスキップされる。
for(int i = 0; i <= 0; i++){
if(i == 7){
continue;
}
}
メソッド化
機能をテンプレ化するもの。
GetCompornentでアクセスできるので、アクセス方法はGetCompornentの箇所にて記載。
private void [名前がはいる] (){
}
その関数をたたくと、返り値[なにか]を出すようにしたい。
public void [名前がはいる] (){
return [なにか]; //メッセージなどでも可
}
配列について
配列は、プレハブをたくさん生成する際に超便利。
生成した番号を管理すれば、プレハブ内に埋め込まれたスクリプトにアクセスして内容を変えたりできる。
1個1個処理をやろうとすると果てしないので、for文等を活用することで超簡素に処理をすることができるメリットがある。
宣言方法は以下。
List <変数の型> [名前] = new List<変数の型>;
配列に何かを足すとき。
[名前].Add(なにか);
配列にAddされたn番目のものを消したいとき。
[名前].RemoveAt(配列の番号);
配列にAddされた指定された内容をまるっと消したいとき。
NGワードとかに便利かも?
[名前].Remove(指定された内容);
配列の中身を、手軽にすべて確認したいとき
foreach
というものが活躍する(for文の記述が長くて面倒なので…)
ここで指定した変数名をDebug.Log();
で見れるようになっている。
foreach(int 変数名 in 配列名){}
Debug.Log();
Classの表記ルール
以下の形で記述すれば、他のスクリプトからクラスで関数をよびだすことができる。
public void なまえ (){
}
public void 処理(){
}
これで、別のスクリプトから以下のような形でClassを流用できる。
なまえ 変数名 = new なまえ();
変数名.処理();