Unity ターン制[No.2]
クリックを検出
name変数を使う
prefabを扱う
別のクラスのメソッドを使えるようにする
オブジェクトを削除する
SEを鳴らす
シングルトン
コルーチン
クリックを検出
prefabにコライダーをつける 例Box Collider2D
カメラにRAYをつける 例Physics 2D Raycaster
prefabにイベントトリガーを付けて関数を紐づける 例Event TriggerのPointer Click
関数の中身は自身につけているがスクリプトを使える
name変数を使う
public new string name;と宣言して上書きする
prefabを扱う
prefabを定義する
prefabのインスタンスを生成する
prefabからスクリプト(コンポーネント)を取得する
public GameObject prefab;
GameObject Obj = Instantiate(enemyPrefab);
Script script = obj.GetComponent<Script>();
別のクラスのメソッドを使えるようにする
メソッドを入れる変数を用意する
メソッドを登録するメソッドを用意する
登録がわ
Action action; //空のメソッドを定義
//登録用
public void AddEventListenerAction(Action addAction){
action += addAction;
}
登録したい関数がある
public Script script; //登録がわを取得
//登録用のメソッドを使う
script.AddEventListenerAction(Action);
public void Action(){
//メソッドの中身
}
オブジェクトを削除する
public Script script //削除したいオブジェクトのスクリプトを取得する
Destroy(script.gameObject);
SEを鳴らす
AudioSourceコンポーネントを用意する
public AudioSource audioSourceSE;//AudioSourceコンポーネントを入れる
public AudioClip audioClip; //SEの音源を入れる
public void PlaySE(){
audioSourceSE.PlayOneShot(audioClip);
}
シングルトン
ゲーム内に1つしか存在しない物。シーン間でのデータが共有できる
シングルトンでSoundManagerを作ることでシーンが遷移しても音が止まらない
シングルトンのコードを定義
SoundManagerをprefab化して各シーンに配置
public static SoundManager instance;//シングルトンを定義
private void Awake() {
if (instance == null)
{
instance = this;
DontDestroyOnLoad(this.gameObject);
}else{
//2つ存在したら片方を破壊するようにしている
Destroy(this.gameObject);
}
}
public AudioSource audioSourceSE;//SEのスピーカー
public AudioClip audioClip;//SEの素材
public void PlaySE(){
audioSourceSE.PlayOneShot(audioClip);
}
コルーチン
コルーチンを定義する
停止時間を設定する
連打してもいいように全てのコルーチンを最初に停止する
StartCoroutineで呼び出す
private void Start() {
StopAllCoroutines();
StartCoroutine(SampleCol());
}
IEnumerator SampleCol(){
Debug.Log("コルーチン開始");
yield return new WaitForSeconds(2f);
Debug.Log("2秒経過");
}
この記事が気に入ったらサポートをしてみませんか?