C#の構造とルール

目次

Unityのデフォルトのスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour 
{

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

C#スクリプトはいくつかエリアに分かれているので、まずはそのエリアについて解説します

C#の機能やUnityの機能を使うと決めている部分

using System.Collections;  //C#の機能を使う
using System.Collections.Generic; //追加のC#の機能を使う
using UnityEngine; //Unityの機能を使う

ここは基本的にはいじりません。
Unityの機能を追加する場合(例えば文字の表示や、体力ゲージなど)、追加します。

スクリプトの名前を決めている部分

public class Sample : MonoBehaviour //スクリプトの名前はSampleに指定しています

ここで指定しているスクリプトの名前とC#を作成した時につけた名前が違うとバグります
MonoBehaviourというのはオブジェクトに貼り付けるタイプのスクリプトという意味です

使う変数の名前を入力する部分

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour 
{
    
 //ここに変数をいれる
    
// Use this for initialization
    void Start () {
    }

例えばGetabakoという変数を作ってみると

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour 
{
    
 public int Getabako;
    
// Use this for initialization
    void Start () {
    }

となります
例ではグローバル変数をint型(整数)でGetabakoという変数を作っています
因みに一つの命令をする度に文末には「;」をつけます

変数の型や演算子については

#C#での変数の作り方

①図を参考にして変数を入力していきます。
図1.png
②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。
スライド1.PNG
型については以下を参考にして下さい。
スライド2.PNG
例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。

にまとめておきましたので見て下さい

ゲームが開始した時に一度だけ実行する部分

// Use this for initialization
    void Start () {
   //ここに一度だけ実行する命令をいれる
    }

ここにはゲーム開始時に一度だけ実行する命令をいれます
よく入力するのは…

  • 開始直後に一度だけ起こるイベント
  • 変数の値の設定
  • コンポーネント(重力や当たり判定などの便利機能)の取得

ゲーム開始中毎フレーム実行する部分

// Update is called once per frame
    void Update () {
   **ここに毎フレーム実行する命令をいれる**
    }
}

ここにはゲーム開始中毎フレーム実行する命令をいれます
ほとんどの命令はここにいれていきます

コルーチン、衝突判定などを入れる部分

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour 
{

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
//ここにコルーチン、衝突判定などをいれます
}

コルーチンは一連の命令を一塊にまとめたもので命令の中で待ち時間を入れたい時にも使います
当たり判定が衝突した時の処理もここにいれます

実際に全てを入れてみると以下のようになります

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour 
{

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

IEnumerator Getabako() → Getabakoというコルーチンを定義している
    {
        yield return new WaitForSeconds(0.5f); → 0.5秒待つ
     Debug.Log(”ゲタバコ先生は最高!!”); → ゲタバコ先生は最高!!とログを出す
}

void OnTriggerEnter(Collider collision) → 当たり判定が衝突したときの命令を記述している
    {
        if (collision.gameObject.tag == "getabako") → もし衝突した当たり判定のタグがgetabakoなら
        {
            StartCoroutine("Getabako"); → Getabakoコルーチンを開始する
        }
    }
}

コルーチン

IEnumerator コルーチンの名前()で始めて{}ではさみます。
コルーチンの中にいれる待ち時間は
yield return new WaitForSeconds(秒数);と記述します。
この命令はコルーチンの中でしか使えません。

衝突判定

void OnTriggerEnter(Collider 変数の名前)で始めて{}ではさみます。

例ではGetabakoというコルーチンを作っていてその内容は0.5秒待ってから
ゲタバコ先生は最高!!とログを出すという一連の流れを設定しています
そしてそのGetabakoコルーチンはgetabakoというタグがついた物に衝突した時に開始されます
コルーチンや、衝突判定についてはこの後実際にスクリプトを作成していく段階でも触れますので、
今は何となくの理解で大丈夫です。

C#の基本まとめ

  • 構造とルールを覚える

構造は以下の図の通りになっていて、②④⑤⑥はそれぞれ { } ではさみます。
また、各命令は文末には必ず ; をつけます。
スクリプトはこのようにエリアに分かれているので、適切な命令を適切なエリアに入力していきます。
//を文頭につけるとそれは全てコメントになり、スクリプトには無関係なものとなります。
人にスクリプトが何をしているのか伝えるときには、このコメントを使うことで、
それぞれの命令が何をしているのかをわかりやすくします。

  • 変数の使い方やif文、コルーチン、衝突判定などよく使う命令の使い方を覚える

変数、if、コルーチン、衝突判定を使いこなせれば基本的なゲームの作用は格段に作りやすくなります。
まずはこれらの基本の型をしっかり頭に叩き込みましょう。

  • その他の命令の使い方を覚える

沢山ありますがあとは書き方を変えるだけ!がんばりましょう

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次