回答編集履歴

1

追記

2021/06/30 13:11

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,143 @@
1
1
  InputFieldは、常に入力カーソル(文字を入力するときに出てくる縦棒のこと)が表示されるように動きますので、縦幅が狭い(2行を表示できない)と、2行目に移ったときに1行目が表示されなくなります。
2
2
 
3
3
  InputFieldのRect TransformでHeightの値を大きくすればよいのではないでしょうか。
4
+
5
+
6
+
7
+ <追記>
8
+
9
+
10
+
11
+ https://kan-kikuchi.hatenablog.com/entry/Text_Preferred
12
+
13
+
14
+
15
+ こちらで紹介されている「text.preferredHeight」を使えば出来そうだと思います。
16
+
17
+ これを使うとテキストを全て表示するために必要な高さ(Widthもあります)を出してくれます。
18
+
19
+ かなり力技ですが、処理が重くならない場所ならあまり気にならないと思います。
20
+
21
+ が、滅茶苦茶なので、こんな方法もあるんだ、程度にお願いします。
22
+
23
+ ※私は、途中に書いている、InputFieldだと必要な縦幅がちゃんと計測できない理由もわかっておりません。
24
+
25
+
26
+
27
+ ```InputFieldManager
28
+
29
+ using UnityEngine;
30
+
31
+ using UnityEngine.UI;
32
+
33
+
34
+
35
+ public class InputFieldManager : MonoBehaviour
36
+
37
+ {
38
+
39
+ //テキストの高さの補正値(任意)
40
+
41
+ [SerializeField] private float TextHeightCorrection;
42
+
43
+
44
+
45
+ //InputFieldを格納するための変数など
46
+
47
+ InputField inputField;
48
+
49
+ RectTransform inputRect;
50
+
51
+ Text text;
52
+
53
+
54
+
55
+ // Start is called before the first frame update
56
+
57
+ void Start()
58
+
59
+ {
60
+
61
+ //InputFieldコンポーネントを取得
62
+
63
+ inputField = GameObject.Find("InputField").GetComponent<InputField>();
64
+
65
+ inputRect = inputField.GetComponent<RectTransform>();
66
+
67
+
68
+
69
+ //InputFieldのテキストを取得
70
+
71
+ text = inputField.textComponent;
72
+
73
+ }
74
+
75
+
76
+
77
+ //入力された名前情報を読み取ってコンソールに出力する関数
78
+
79
+ public void GetInputName()
80
+
81
+ {
82
+
83
+ //InputFieldからテキスト情報を取得する
84
+
85
+ string name = inputField.text;
86
+
87
+ Debug.Log(name);
88
+
89
+
90
+
91
+ //入力フォームのテキストを空にする
92
+
93
+ inputField.text = "";
94
+
95
+ inputField.ActivateInputField();
96
+
97
+ }
98
+
99
+
100
+
101
+ //InputFieldコンポーネントの「On Value Changed」に設定
102
+
103
+ public void OnEditInputField()
104
+
105
+ {
106
+
107
+ //一旦、必要サイズ計測の為に大きくする
108
+
109
+ //InputFieldのサイズが小さいと必要な縦幅がちゃんと出されないみたいです
110
+
111
+ inputRect.sizeDelta = new Vector2(inputRect.sizeDelta.x, 1000);
112
+
113
+
114
+
115
+ //1行以下の場合(30は初期値)
116
+
117
+ if (text.preferredHeight < 30)
118
+
119
+ {
120
+
121
+ inputRect.sizeDelta = new Vector2(inputRect.sizeDelta.x, 30f);
122
+
123
+ }
124
+
125
+ //2行以上の場合
126
+
127
+ else
128
+
129
+ {
130
+
131
+ inputRect.sizeDelta = new Vector2(inputRect.sizeDelta.x, text.preferredHeight + TextHeightCorrection);
132
+
133
+ }
134
+
135
+ }
136
+
137
+ }
138
+
139
+ ```
140
+
141
+
142
+
143
+ 一応これで動きました。