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

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

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

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

Unity

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

Q&A

解決済

1回答

2105閲覧

Unity togglegroupのtextを取得したい

Tomo0225

総合スコア67

C#

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

Unity

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

0グッド

0クリップ

投稿2020/09/22 15:21

前提・実現したいこと

Unityでチェックボックスから一つを選んで選んだチェックボックスについているテキストを変数に入れたいです。
やったことはgameObject(ToggleManager)の子にToggleを4つ配置しそれぞれの子にTextを配置しています。ToggleManagerにToggleGroupを作り4つのトグルを紐づけしています。(画像1)
そしてToggleManagerに以下のスクリプトを張り付けています。そして各トグルのOn Value Changedのところでdebugメソッドを呼びだすようにしています。(画僧2)

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

この状態で実行しチェックボックスを押すとチェックができず NullReferenceException: Object reference not set to an instance of an object JobToggle.debug () (at Assets/MakeChara/JobToggle.cs:20) というエラーメッセージがでてしまいます。

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; using UnityEngine.UI; using System.Collections; public class JobToggle : MonoBehaviour { ToggleGroup togglegroup; string tgljob = ""; public void Start() { Debug.Log("スタートメソッド"+this.name); } public void debug(){ tgljob = togglegroup.ActiveToggles() .First().GetComponentsInChildren<Text>() .First(t => t.name == "Text").text; Debug.Log("トグルが変更されたよ"+tgljob); } }

試したこと

スクリプトの
tgljob = togglegroup.ActiveToggles()
.First().GetComponentsInChildren<Text>()
.First(t => t.name == "Text").text;
の部分を削除すると何も問題なく動きます。
参考までにゲーム画面も貼っておきます(画像3)

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

![イイメー
イメージ説明
イメージ説明何卒よろしくお願いします。
Unity初心者で基本的なことも分かっていませんが何卒

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

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

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

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

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

fiveHundred

2020/09/23 00:30

ToggleGroupを取得している箇所がどこにもないですが、これで全文ですか?
Tomo0225

2020/09/23 07:23

スクリプトはこれで全文です。 ToggleGroupを取得とは ToggleGroup togglegroup; のことではないですか?。
guest

回答1

0

ベストアンサー

ToggleGroupを取得とは
ToggleGroup togglegroup;
のことではないですか?。

ToggleGroup togglegroup;を定義しても中身は空(null)です。
スクリプトやインスペクター(※)で中身を設定してください。
(※:変数にpublic[SerializeField]を付ける必要あり)

おそらくですが、この場合はStart()にtogglegroup = GetComponent<ToggleGroup>();を追加するのが楽だと思います。

投稿2020/09/23 23:53

fiveHundred

総合スコア10152

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

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

Tomo0225

2020/09/24 06:17

togglegroupが空だったのですね。理解できました。大変ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問