質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2886閲覧

unity 最初の1回のみ遊び方を表示して、その窓を消した後にゲームがスタートするようにしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2015/04/14 02:54

編集2015/04/14 02:55

if文を使ってDescriptionWindow(遊び方説明画面)が初回の1PLAYのみ表示されて、それ以降は表示されずにそのままゲームが始まるようにしたいと思っています。

・DescriptionWindow

#pragma strict

var DescriptionWindow : GameObject;

private var prefix : String = "dw_";

function Awake(){
var isCheck : String = PlayerPrefs.GetString(prefix + "isCheck","false"); //
if(isCheck != "false"){ //
DescriptionWindow.SetActive(false); //
}
}

function windowClose(){ //
DescriptionWindow.SetActive(false); //
PlayerPrefs.SetString(prefix + "isCheck","true"); //
}

・InterfaceControllerの一部

#pragma strict

import UnityEngine.UI;

// Attach GameObject.
var startCountDown : UI.Text;
var curtain : UI.Image;
var DescriptionWindow : GameObject; // DescriptionWindowのアタッチ

// Attach AudioClip.
var seOnCountDown : AudioClip;
var seOnFinish : AudioClip;

private var totalDistance : float = 1210.0; //units.
private var currentDistance : float = 0;
private var maxSpeed : float = 35;
private var currentSpeed : float = 0; //scroll speed in unit per second.
private var updateDeltaTime : float = 0;
private var onEntry : boolean = false;
private var onEntryStep : int = 0;
private var onPlay : boolean = false;
private var onFinish : boolean = false;
private var buttonAB : boolean = false;
private var isDamage : boolean = false;

// Other Componant.
private var background : Background;
private var player : GameObject;

function Awake(){
background = GameObject.Find("Background").transform.GetComponent(Background);
player = Resources.Load("Player/Player");
curtain.enabled = false;
}

function Start(){
updateDeltaTime = 0.0;
startCountDown.enabled = false;
startCountDown.text = "3";
player = Instantiate(player);
onEntry = true;
}

function Update(){

if (Input.GetKeyDown (KeyCode.A)) { onClickButtonA(); } if (Input.GetKeyDown (KeyCode.S)) { onClickButtonB(); } if(onEntry){ updateDeltaTime += Time.deltaTime; // if(updateDeltaTime > 1.0 && onEntryStep == 0){ // もし startCountDown.enabled = true; // audio.PlayOneShot(seOnCountDown); // startCountDown.text = "3"; // onEntryStep++; // }else if(updateDeltaTime > 2.0 && onEntryStep == 1){ // startCountDown.text = "2"; // onEntryStep++; // }else if(updateDeltaTime > 3.0 && onEntryStep == 2){ // startCountDown.text = "1"; // onEntryStep++; // }else if(updateDeltaTime > 4.0 && onEntryStep == 3){ // startCountDown.text = "Go!"; // onEntryStep++; // //start! GameObject.Find("Main Camera").GetComponent(AudioSource).Play(); // audio.Play(); onPlay = true; currentSpeed += 2.0; player.transform.GetComponent(Player).playStart(); gameObject.transform.GetComponent(StopWatch).playStart(); }else if(onEntryStep == 4){ startCountDown.color.a -= 0.02f; if(startCountDown.color.a <= 0.0){ startCountDown.enabled = false; onEntry = false; } } }

どこにどう書いていいのか分かりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

javaScriptはあまり自信ないですが、コメントを付けるとしたらだいたいこんな感じです。

lang

1function Awake(){ 2 var isCheck : String = PlayerPrefs.GetString(prefix + "isCheck","false"); // isCheckの値を取得。無い場合(デフォルト)はfalse 3 if(isCheck != "false"){ // 既にisCheckがtrueになっていたら 4 DescriptionWindow.SetActive(false); // DescriptionWindowを非活性にする(出さない) 5 } 6} 7 8function windowClose(){ // DescriptionWindowを閉じる処理 9 DescriptionWindow.SetActive(false); // DescriptionWindowを閉じる 10 PlayerPrefs.SetString(prefix + "isCheck","true"); // isCheckをtrueにしておく。こうする事でAwake()で出なくなる。 11 // ★★★★★★ 12}

つまり、最初はisCheckがfalseになっているからDescriptionWindowが画面に出るが、
一度windowClose()を読んで閉じれば、次回以降はisCheckがtrueになっているので出なくなります。

lang

1 if(onEntry){ 2 updateDeltaTime += Time.deltaTime; // 経過時間を加算していく。(ストップウオッチみたいなもの) 3 if(updateDeltaTime > 1.0 && onEntryStep == 0){ // もし1秒経過していてonEntryStepが0だったら 4 startCountDown.enabled = true; // startCountDownを活性化する 5 audio.PlayOneShot(seOnCountDown); // カウントダウンのseをスタートさせる(?) 6 startCountDown.text = "3"; // カウントダウンの表示を「3」にする 7 onEntryStep++; // 次のステップへ進む(これでこのif分にはもう入らなくなる) 8 }else if(updateDeltaTime > 2.0 && onEntryStep == 1){ // もし2秒経過していてonEntryStepが1だったら 9 startCountDown.text = "2"; // カウントダウンの表示を「2」にする 10 onEntryStep++; // 次のステップへ進む 11 }else if(updateDeltaTime > 3.0 && onEntryStep == 2){ // もし3秒経過していてonEntryStepが2だったら 12 startCountDown.text = "1"; // カウントダウンの表示を「1」にする 13 onEntryStep++; // 次のステップへ進む 14 }else if(updateDeltaTime > 4.0 && onEntryStep == 3){ // もし4秒経過していてonEntryStepが3だったら 15 startCountDown.text = "Go!"; // カウントダウンの表示を「Go!」にする 16 onEntryStep++; // 次のステップへ進む 17 18 //start! 19 GameObject.Find("Main Camera").GetComponent(AudioSource).Play(); 20 // audio.Play(); 21 onPlay = true; 22 currentSpeed += 2.0; 23 player.transform.GetComponent(Player).playStart(); 24 gameObject.transform.GetComponent(StopWatch).playStart(); 25 26 }else if(onEntryStep == 4){ // ステップが4だったら 27 startCountDown.color.a -= 0.02f; // カウントダウンの表示を透明にしていく 28 if(startCountDown.color.a <= 0.0){ // 表示が消えたら(消えただけで活性化されてる) 29 startCountDown.enabled = false; // カウントダウンの表示を非活性にする 30 onEntry = false; // カウントダウンを終わりにする 31 } 32 } 33 }

この処理は完全にカウントダウンしてるだけですね。

で、質問の

if文を使ってDescriptionWindow(遊び方説明画面)が初回の1PLAYのみ表示されて、それ以降は表示されずにそのままゲームが始まるようにしたい

ですが、
今現在は DescriptionWindow をどうやって呼び出して、どうやって閉じていますか?
閉じる際に「とじるボタン」とかがあるなら、
それが押されたときにwindowClose()が呼ばれていれば可能な気がします。

もし出来ないようでしたら、windowClose()の★マークをつけたところに、
PlayerPrefs.Save(); これを追加してください。

lang

1function windowClose(){ // DescriptionWindowを閉じる処理 2 DescriptionWindow.SetActive(false); // DescriptionWindowを閉じる 3 PlayerPrefs.SetString(prefix + "isCheck","true"); // isCheckをtrueにしておく。こうする事でAwake()で出なくなる。 4 PlayerPrefs.Save(); 5}

UnityのPlayerPrefsでデータをセーブする
※抜粋
Unityはアプリ終了時にデータを保存してくれますが、
アプリのクラッシュなどが発生した時は保存できないこともあるみたいなので、
大事なデータを保存するときは一緒に呼んでおいたほうが良さそうです。

なので、やってみる価値はありますね。

がんばってください。

投稿2015/04/14 03:54

runun

総合スコア305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/04/14 05:00

すごく丁寧に回答してくださりありがとうございます! 頑張ってやってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問