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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

0回答

860閲覧

スコア表示についてです

soranin

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2020/06/11 23:59

前提・実現したいこと

各スコアに数字を代入したいと考えています
ボールとCubeのオブジェクトを用意して
ボールがCubeに衝突した際 ボールの数値を取得してスコアに反映されるようにしています
一つ目のスコア表示は大丈夫でしたが二つ目以降からが分からず止まっています

詳しく
・43個のボールを用意しており、ボールのオブジェクト名(数字)で数字を取得出来るようにしています。

・43個ある1つがCubeに当たると、一つ目のスコア(画像のScene1の所)に表示され、Scene1の抽選は終了

・次のSceneに行くボタンを押すと、Scene2になり、二回目の抽選が始まる
※オブジェクト破壊を防ぐためDontDestroyOnLoadを使用して引継ぎが出来るようにしています

・スコアも引き継いでいるため、現段階では2回目の抽選を行うと、また一回目のスコアに反映されてしまいます

・下記のスクリプトだと指定してるテキストのみになるのでScene1しか反映されない
※現在取得できる数字を減らしています

 ボールの方にはスクリプトは入れていません

イメージ説明

該当のソースコード

Cubeの方
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Text.RegularExpressions;

public class Defense : MonoBehaviour
{
public Text number;

//衝突したとき一度だけ判定を行う void OnCollisionEnter(Collision collision) { for (int i = 1; i <= 5; i++) { if (collision.gameObject.name == "Item (" + i.ToString() + ")") { number.text = i.ToString(); Debug.Log(collision.gameObject.name); } } }

}

ボタンに入れてるscript

using UnityEngine.SceneManagement; //シーンマネジメントを有効にする

public class GameController2 : MonoBehaviour
{
public void toGameScene()
{
SceneManager.LoadScene("Scene2");
}
}

試したこと

上記のスクリプト加え
https://ja.stackoverflow.com/questions/1738/unity4-6%E3%81%A7ui%E3%81%AEtext%E3%82%92%E8%A4%87%E8%A3%BD%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
こちらのサイトでテキストをクローン化させて増やす所までは出来たのですが
やはりスコアに代入するところで躓いてしまってます

補足情報(FW/ツールのバージョンなど)

unity2019
ここに より詳細な情報を記載してください。

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

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

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

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

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

sakura_hana

2020/06/12 00:58

DontDestroyOnLoadが適用されているのはどのオブジェクトですか? テキストをクローンさせたコードも記載してください。 また、スクリプトは前後の行に「```」を入れ、URLはリンクにしてください。参考→https://teratail.com/help#about-markdown
soranin

2020/06/12 01:49

Deliverというゲームオブジェクトを用意して引き継ぎたいものをDeliverの中に入れてます Defenseを改良して クローンを組み合わせました void Start() { text = new GameObject[7]; for (int i = 1; i < 7; i++) { text[i] = Instantiate(originalText) as GameObject; text[i].transform.localPosition = new Vector3(50 + (i * 110), 700 - 22); text[i].transform.parent = originalText.transform.parent; } } //衝突したとき一度だけ判定を行う void OnCollisionEnter(Collision collision) { for (int i = 1; i <= 5; i++) { if (collision.gameObject.name == "Item (" + i.ToString() + ")") { text[1].GetComponent<Text>().text = i.ToString(); Debug.Log(collision.gameObject.name); } } } }
soranin

2020/06/12 01:49

numberはTextに変えています
sakura_hana

2020/06/12 06:31

それなら後は「今何番目のシーンか」を示す変数(例えばnowSceneNum)を1つ用意しておいて、 text[nowSceneNum].GetComponent<Text>().text = i.ToString(); みたいに使って、シーン遷移時にその変数の数字を増やせばいいと思います。(違うクラスの変数の操作方法はググってください) (そもそも複数のシーンでやる理由がよく分かりませんし「引き継ぎたいもの」が結局どれかも不明ではありますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問