🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

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

Q&A

解決済

1回答

8157閲覧

キャラ選択シーンで選択したキャラをゲームに出したい

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

0グッド

1クリップ

投稿2019/12/20 15:53

編集2019/12/21 03:00

実現したいこと

船を選択したらゲームシーンで使う船の種類を選択した船に変更したい
uguiボタンがあるのでそれを押すと選択出来るようにしたい

現状

タイトルシーンにボタンを作ってキャラ選択シーンをロードするようにした

見たサイト

https://clrmemory.com/programming/unity/char-select-script/
初期設定としてそれぞれのキャラクターはpublic GameObject で指定し、さらにすべてのキャラのオブジェクトは非表示にしておきましょう。
とあるのですがゲームシーンキャラスクリプトの中でGameObjectの配列をつくって非表示にするという意味でしょうか。またこのサイトのやり方だと絶対にキャラを選ばないといけないので初期のキャラは決めておいて消費者が変えたれば変更できるようにしたいです。
もしくは他のやり方があれば参考にしたいので教えていただきたいです。

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

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

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

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

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

sakura_hana

2019/12/21 02:12 編集

参照先のページだけ見ても実際何言ってるか分からないし、あなたが何をしたいのかも分かりません。 「キャラクターを選択する」というのがそもそも抽象的です。 「選択すると何がどうなるのか(何かの変数に値が入るだけでいいのか、PlayerPrefsで保存したいのか、それ以外の何かの処理が必要なのか等)」 「どうやって選択したいのか(uGUIのボタンを押すのか、3Dモデルをクリックするのか等)」 という2点は少なくとも必要な情報なので提示してください。 https://teratail.com/help/question-tips こちらをご確認の上、質問を編集してください。
退会済みユーザー

退会済みユーザー

2019/12/21 02:53

御指摘ありがとうございます
guest

回答1

0

ベストアンサー

まずゲームメインシーンに使いたいキャラクターを配置しておいて
キャラクターたちをUnityEditor上から非表示にしておく。

おそらくですが肝心なのはPlayerPrefs.SetIntでしょうね。

C#

1PlayerPrefs.SetInt("hoge",1);

ゲームの再起動しても

C#

1PlayerPrefs.GetInt("hoge");

と参照すると「1」が取得できるようになります。
これをうまく使えば例えシーンを跨いだとしても値を保持し続けるので

C#

1PlayerPrefs.SetInt("character1",0); 2PlayerPrefs.SetInt("character2",0); 3PlayerPrefs.SetInt("character3",1);

最初にcharacter3を使いたい場合は
ボタンを押した時に以上のような処理を呼び出すように設定しておき

C#

1 2public GameObject character_1; 3public GameObject character_2; 4public GameObject character_3; 5 6void Start(){ 7 8 if(PlayerPrefs.GetInt("character1") == 1){ 9 character_1.SetActive(true); 10 } 11 if(PlayerPrefs.GetInt("character2" == 1)){ 12 character_2.SetActive(true); 13 } 14 if(PlayerPrefs.GetInt("character3" == 1)){ 15 character_3.SetActive(true); 16 } 17}

UnityEditor上からcharacter_1,character_2,character_3
に対してキャラ選択対象のゲームオブジェクトをドラッグ&ドロップしておいて
ゲームメインのシーンが始まったらこんな感じのを処理を読むようにしておくと
キャラ選択が実装できますよ〜って言ってるんじゃないかな。

自分がキャラ選択実装するなら、こんな実装にはしないですけどね。

投稿2019/12/21 16:01

編集2019/12/21 16:03
U_U_Jenkins

総合スコア110

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

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

退会済みユーザー

退会済みユーザー

2019/12/22 02:48 編集

実装しないんですね!とても分かりやすい説明でしたありがとうございます! よければ教えてもらいたいんですけど非表示にするのは重くならないんでしょうか もしくはキャラジェネレーターを作って配列の中にキャラを入れるのを試そうかとと思っているのですがInstantiate(キャラ[1], transform.position, transform.rotation); キャラ[]の部分にキャラ選択シーンで選んだキャラにするにはキャラ選択シーンでオブジェクトタップするとPlayerPrefs.SetInt("character",1);として キャラジェネレーターでPlayerPrefs.GetInt(""character"); if(caharacter=1) { Instantiate(キャラ[1], transform.position, transform.rotation); } みたいな感じでできるでしょうか 考えがあまりまとまっていなくてすみません
U_U_Jenkins

2019/12/23 12:55 編集

非表示にしてあげたら重たくはならないはずです。 でもメモリは食うのでRo_kuさんのおっしゃる通り、まだそのやり方の方が良さそうです。 まだ綺麗に収まる方法としてはキャラ配列に0~2に生成したいキャラクターを突っ込んでおいて PlayerPrefs.SetInt("character",0);or PlayerPrefs.SetInt("character",1);or PlayerPrefs.SetInt("character",2); Instantiate(character[PlayerPrefs.GetInt(""character")]) でもいける気がしますよ
退会済みユーザー

退会済みユーザー

2019/12/23 15:58

返信ありがとうございます キャラの型は同じなのでマテリアルを教えていただいたPlayerPrefs.SetIntを参考に変更する仕様にしました 今後の参考にさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問