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

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

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

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

Unity

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

Q&A

解決済

4回答

3341閲覧

Unityにおいてボタンを押すとInputFieldを非表示から表示するようにしたい

abc_oxox

総合スコア27

C#

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

Unity

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

0グッド

0クリップ

投稿2018/04/11 09:48

編集2018/04/27 03:31

Unityにおいてボタンを押すとInputFieldを非表示から表示するようにしたいしたいのですが,うまくいきません.
ボタンを押すごとに表示,非表示,表示と切り替わるようにしたいです.

https://teratail.com/questions/42714
を参考にして,ボタンを押すとInputFieldを無効にすることはできましたが,Placeholderのtextは消えず,無効から有効にする方法もわかりませんでした.
また,無効から有効にするのではなく,表示も非表示から表示されるようにしたいです.

よろしくお願いします.

追記
InputFieldの非表示は入力が不可になるだけでなく,見た目も非表示にしたいです.
表示,非表示を切り替えるボタンを押すたびに,InputFieldがでたり,消えたりするようにしたいです.

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

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

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

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

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

MMashiro

2018/04/27 00:08

非表示はどこまで非表示にしたら良いのでしょうか?完全にInputFieldの見た目がなくなるのか、入力が不可になるのか等
guest

回答4

0

非アクティブになっているオブジェクトをGameObject.Findで取得しようといるのであれば、確か取得できなかったはずです。

Public GameObject 変数;
で宣言して、Unityの画面からオブジェクトをアタッチしたらいけるはずです

投稿2018/04/12 00:57

kakeiteiya

総合スコア252

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

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

0

ベストアンサー

こういうことですよね。動画をみてください。

参考動画

みなさんが回答されているとおりで、この場合は InputField コンポーネントではなく、InputField のゲームオブジェクト全体を SetActive で切り替えればよいと思います。

InputField ゲームオブジェクトには表示に関するコンポーネントなども含まれているので、ゲームオブジェクトごと切り替えてやればOKです。

参考スクリプト

C#

1using UnityEngine; 2using UnityEngine.UI; 3 4 5public class ButtonController : MonoBehaviour 6{ 7 // インスペクターから指定する 8 public GameObject inputFieldGameObject; 9 public Button button; 10 11 12 private void Start () 13 { 14 bool isActive = true; 15 16 // ボタンが押されたら、InputFieldゲームオブジェクトのアクティブ/非アクティブを切り替える 17 button.onClick.AddListener ( () => 18 { 19 isActive = !isActive; 20 inputFieldGameObject.SetActive ( isActive ); 21 } ); 22 } 23}

投稿2018/04/27 12:52

negitama

総合スコア943

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

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

abc_oxox

2018/05/01 03:16

コメントが遅れて申し訳ありません. 私がやりたいことは参考動画の通りです. 直近Unityを扱える環境がないのでまだ試していませんが,提示いただいたスクリプトのように書けば実現できそうな気がします. ありがとうございました.
guest

0

追記

InputFieldの非表示は入力が不可になるだけでなく,見た目も非表示にしたいです.
表示,非表示を切り替えるボタンを押すたびに,InputFieldがでたり,消えたりするようにしたいです.

とのことでしたらInputFieldがアタッチされているGameObjectに対してSetActive(false)をすれば非表示になるはずです。
非表示にしてしまうとGameObject.Findで検索に引っかからなくなるため
Findを使用してSetActive(false)をするのであれば
事前に変数辺りに退避させるのをおすすめします

投稿2018/04/27 03:55

MMashiro

総合スコア2378

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

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

0

textを消すのは

C#

1public GameObject text; 2 3public void ButtonDown() 4{ 5 text.SetActive(false); 6}

このスクリプトを空のゲームオブジェクトにわりあて、InspectorのtextにPlaceholderをわりあててください。
ボタンのInspectorを開いてOnClick()にButtonDown()を選択してください。

わからないことが有りましたら何でも返信してください

投稿2018/04/11 10:33

編集2018/04/11 10:33
Yuki_Unity

総合スコア129

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

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

abc_oxox

2018/04/12 08:09

この方法でtextを消すことはできましたが,最終的な目標はInputFieldの入力の枠とPlaceholderを非表示の状態から,表示することです. InputFieldはSetActiveが使えないようなので,SetActiveのような関数があったら教えていただきたいです.
Yuki_Unity

2018/04/30 00:29

InputField をGameObject型でやればSetActive(true / false)は使えますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問