だらだら〜個人事業〜

HatenaDiaryから引っ越してきました。Githubもnyakagawanです。

Reading 3DPlatformTutorial 3rd

45〜64ページまで

体力回復アイテム(ハート)や燃料回復アイテムの取得

ジャンプ板の追加

  • これもColiderとスクリプト追加。なぜかうまく行かなかった

Guiに突入

UnityのGUIは簡単

if( GUI.Button( rect, "label" ) ) {
  // クリックしたらここが実行される
}

InGameHUDを作る

  • GUISkinっつーので、ButtonとかLabelとかWindowなどのGuiオブジェクトのデフォルト設定とかを行うみたい
  • 体力や燃料のHUDは、LevelオブエジェクトにGameHUDってスクリプト貼って、そいつで管理した
    • なんでLevelにアタッチしたかっていうと、Scene中で常にインスタンスしてそうだからって理由(カメラでも何でもいい)

TitleSceneとTitelUIの作成

  • シーン作る(Ctrl+N)で、StartMenuって名前で保存
  • 音が欲しいからProjectのSoundsフォルダのStartMenu AudioClipをMainCameraに追加
    • Play On Awake と Loop にチェックを入れたらおk。簡単やな。
  • んでUI管理のために、Start Menu GUI ってスクリプトを作ってカメラに追加↓
@script ExecuteInEditMode()
var gSkin : GUISkin;
var backdrop : Texture2D;
private var isLoading = false;

function OnGUI()
{
	if( gSkin )	GUI.skin = gSkin;
	else		Debug.Log( "StartMenuGUI: GUI Skin object missing!" );

	var backgroundStyle : GUIStyle = new GUIStyle();
	backgroundStyle.normal.background = backdrop;
	GUI.Label( Rect( ( Screen.width - ( Screen.height * 2 ) ) * 0.75, 0, Screen.height * 2, Screen.height ), "", backgroundStyle );

	GUI.Label ( Rect( (Screen.width/2)-197, 50, 400, 100), "Lerpz Escapes", "mainMenuTitle");

	if (GUI.Button( Rect( (Screen.width/2)-70, Screen.height - 160, 140, 70), "Play")) {
		isLoading = true;
		Application.LoadLevel("TheGame"); // load the game level.
	}

	var isWebPlayer = (Application.platform == RuntimePlatform.OSXWebPlayer
					|| Application.platform == RuntimePlatform.WindowsWebPlayer);
	if (!isWebPlayer) {
		if (GUI.Button( Rect( (Screen.width/2)-70, Screen.height - 80, 140, 70), "Quit"))
			Application.Quit();
	}

	if (isLoading)
		GUI.Label ( Rect( (Screen.width/2)-110, (Screen.height / 2) - 60, 400, 70), "Loading...", "mainMenuTitle");

}