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

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

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

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

Unity

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

Q&A

解決済

1回答

1135閲覧

スクリプトを切り替える

soranin

総合スコア13

C#

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

Unity

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

0グッド

0クリップ

投稿2020/06/08 06:44

編集2020/06/08 07:04

前提・実現したいこと

一回目の抽選が終了し
シーンが切り替わり二回目の抽選が始まるようにしてますが
ボールは一回目のオブジェクトを使用していて、Scriptも引き継がれるため
スコアが最初の方に適用され上手くいきません

自分ではシーンの切り替えボタンを押した際
スクリプトが切り替わるようになれば良いのかなと思いました
イメージ説明

引き継げるようにDontDestroyOnLoadを別のscriptで使用しています
分かりづらく申し訳ないです
宜しくお願いします

発生している問題・エラーメッセージ

下記コードの中に
GetComponent<scoreScript>().enabled = 真偽;
を上手く埋め込めばいける考えています、、

該当のソースコード

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

public class GameController2 : MonoBehaviour
{
// Update is called once per frame
public void toGameScene()
{
SceneManager.LoadScene("main01");
}
}

試したこと

サイトを調べ上記の GetComponent<scoreScript>().enabled = true;を参考に
しましたが上手くできず

そもそも使い方がOutなのか

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

unity2019

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

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

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

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

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

fiveHundred

2020/06/08 07:00

> シーンが切り替わり二回目の抽選が始まるようにしてますが > ボールは一回目のオブジェクトを使用していて、Scriptも引き継がれるため 通常であれば、シーンをロードした時点で全てのゲームオブジェクトが破棄されるので、矛盾しています。 もし何らかの方法で破棄されないようにしているのであれば、その詳細を質問文に記載してください。
soranin

2020/06/08 07:03

DontDestroyOnLoadを使用して 次のシーンに引き継げるようにしています 説明不足で申しわけございません
guest

回答1

0

ベストアンサー

引き継ぐゲームオブジェクトのスクリプトが書かれていないため、具体的なことは答えられませんが、その引き継がれるスクリプトに回数を記録しておき、回数によって処理を分岐させればよろしいかと思います。

投稿2020/06/08 07:09

fiveHundred

総合スコア10152

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

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

soranin

2020/06/08 07:20

public class scoreScript : MonoBehaviour { public Text scoreText; //Text用変数 private int score = 0; //スコア計算用変数 void Start() { score = 0; SetScore(); //初期スコアを代入して表示 } void OnCollisionEnter(Collision collision) { string yourTag = collision.gameObject.tag; if (yourTag == "Item") { score += 1; } SetScore(); } void SetScore() { scoreText.text = string.Format("{0}", score); } } このScriptを値を変えながらSphereに一つずつ埋め込んでいます(43個) 回数ならば、ここかなと思っています
fiveHundred

2020/06/08 07:32

> このScriptを値を変えながらSphereに一つずつ埋め込んでいます(43個) このスクリプトを全てのSphereにアタッチしているということですか? もしそうであれば、スコアは1つだけ存在する(=Sphereごとではない)のが普通なので、1つだけのゲームオブジェクトにアタッチすべき内容だと思います。
soranin

2020/06/08 07:37

勉強を始めたばかりで上手くまとめる事が出来ず 一つ一つに埋め込む形になりました 参考になるサイトなどはありますでしょうか? 本来であれば それも自身で調べないといけませんが、、、 申し訳ございません
fiveHundred

2020/06/08 08:03

まずは、Sphereごとに必要な処理と、そうでない処理を分けてください。 分けられれば、それに基づいて、それぞれのスクリプトを用意すればよろしいかと思います。
soranin

2020/06/09 06:15

返信が送れて申し訳ないです 全て必要な処理に思えて分ける事が出来ませんでした、、、 地道にさがして行こうと思います、、、
soranin

2020/06/09 06:16

回答されたのに、このような結果になり申し訳ないです
fiveHundred

2020/06/09 06:41 編集

少なくとも、「合計スコア」はSphereごとに分ける必要はないでしょう。 むしろ、Sphereごとに用意すると正しく動作しませんので、1つにまとめるべき内容です。 Sphereごとに合計スコアを持ってしまうと、あるSphereは10点、あるSphereは20点、という事態に陥ります。 それに、合計スコアはゲーム中に1つだけで、Sphereごとにあるわけではないですよね。
soranin

2020/06/09 08:07

となると43個のSphereを一つのゲームオブジェクトに入れて格納して そのゲームオブジェクトに回数処理のスクリプト・ボールに数字を割り当てるスクリプト・割り当てた一つのボールがスコアに反映されるスクリプト この3つを組み合わせるんですかね??
soranin

2020/06/09 08:09

なお数字がスコアに反映される際は ボールが壁に衝突した時に反映されるようにしています また衝突したボールはDestroyで消滅させています
soranin

2020/06/09 08:10

ほとんどのスクリプト単体で作っているため めちゃくちゃになっています。。。
fiveHundred

2020/06/09 08:22

無理にスクリプトを分ける必要はないです。 また、「ボールの数値」のようなものは以前のようにボール全てにアタッチするスクリプトとしてしまってもいいでしょう。 この場合、「ボールの数値」をインスペクター上で編集できるようにしたほうが楽ではないかと思います。 最もこれらは設計次第ですので、まずは自分で作ったり試してみてください、と答えるしかない面もありますが。
soranin

2020/06/09 08:28

理解できるまでは覚えていくしかないですよね。。。 最終的にはカウント処理をボタンスクリプトかSphere内のスクリプトに入れてあげれば何とかなりますかね
fiveHundred

2020/06/09 08:35

カウント処理もボールごとに用意するわけではないので、Sphere内のスクリプトではないと思います。 自分だったら、「ゲームの処理や管理を行うスクリプト」としてスコアと一緒のスクリプトにします。
soranin

2020/06/09 09:00

ボタンを押して次のシーンに行くスクリプトに当てはめようと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問