Tips

【Unity】練習問題 1

【Unity】練習問題 1

Unity練習問題 問1


UnityのエディターやC#スクリプトのオリジナル問題を紹介していきます。
第一問はイベント関数についての問題です。

問題


ゲームオブジェクトに下記のスクリプトSample_1をアタッチしてシーンを再生した。
動作結果として正しいものを1つ選択しなさい。

using UnityEngine;
using System.Collections;

public class Sample_1 : MonoBehaviour {

	int x = 0;

	void Start () {
		x = 300;
	}

	void Awake() {
		x = 100;
	}

	void Update () {
		Test();
		Debug.Log(x);
	}

	void Test() {
		int x = 200;
	}
}

※その他のスクリプトは動作していないものとする。

  1. Consoleに「0」が繰り返し出力される。
  2. Consoleに「100」が繰り返し出力される。
  3. Consoleに「200」が繰り返し出力される。
  4. Consoleに「300」が繰り返し出力される。
  5. Consoleには、何も出力されない。
  6. シーンを再生するとエラーとなる。
  7. コンパイルエラーとなるため、シーンを再生できない。

解答


解答を見る

4

解説


解説を見る

以下の3つのメソッドはイベント関数であるため、呼び出される順番が決まっています。
・Awake()は、シーンの開始直後や、プレハブがインスタンス化された直後に一度だけ呼ばれます。
・Start()は、最初のUpdate()が行われる前に一度だけ呼び出されます。
・Update()はフレームごとに一度呼び出されます。
したがって、イベント関数が呼び出される順番は、Awake() → Start() → Update() → Update() → Update() → ……
となり、int x の値は、0 → 100 → 300 となります。
Debug.Log() は引数の値をConsoleビューにログを出力するため、4番が正解となります。

Update()の中でユーザー定義関数 Test() が呼ばれており、こちらも繰り返し実行されますが、
その中で定義されている int x はローカル変数であるため、6行目で初期化しているインスタンス変数とは関係がありません。

<<  < 次の問題

[Unity_317×90]

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search