回答編集履歴
2
誤字を修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
文字列の加工とか解析はちょっと自
|
1
|
+
文字列の加工とか解析はちょっと自信がないのですが、こんなメソッドを用意してみてはいかがでしょう?
|
2
2
|
|
3
3
|
```C#
|
4
4
|
using UnityEngine;
|
1
実行例を追加
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
{
|
9
9
|
var elements = input.Trim('(', ')').Split(','); // 前後に丸括弧があれば削除し、カンマで分割
|
10
10
|
var result = Vector3.zero;
|
11
|
-
var elementCount = Mathf.Min(elements.Length, 3); // ループ回数をelementsの
|
11
|
+
var elementCount = Mathf.Min(elements.Length, 3); // ループ回数をelementsの数以下かつ3以下にする
|
12
12
|
|
13
13
|
for (var i = 0; i < elementCount; i++)
|
14
14
|
{
|
@@ -26,10 +26,11 @@
|
|
26
26
|
Debug.Log(StringToVector3("(1, 2, 3)")); // 通常の場合 → (1.0, 2.0, 3.0)
|
27
27
|
Debug.Log(StringToVector3("(1, 2)")); // 成分の数が足りない → (1.0, 2.0, 0.0)
|
28
28
|
Debug.Log(StringToVector3("(1, 2, 3, 4, 5, 6)")); // 成分の数が多い → (1.0, 2.0, 3.0)
|
29
|
-
Debug.Log(StringToVector3("1, 2, 3")); // 括弧がない → (1.0, 2.0, 3.0)
|
29
|
+
Debug.Log(StringToVector3("1, 2, 3")); // 丸括弧がない → (1.0, 2.0, 3.0)
|
30
30
|
Debug.Log(StringToVector3("(Infinity, -Infinity, NaN)")); // 特殊な値を含む → (Infinity, -Infinity, NaN)
|
31
31
|
Debug.Log(StringToVector3("(1.23e456, Foo, 1.23e4)")); // Xが大きすぎる、Yが無効な文字列、Zは有効な文字列 → (0.0, 0.0, 12300.0)
|
32
|
+
Debug.Log(StringToVector3("")); // 空の文字列 → (0.0, 0.0, 0.0)
|
33
|
+
Debug.Log(StringToVector3(null)); // 引数がnull → NullReferenceException: Object reference not set to an instance of an object
|
32
34
|
}
|
33
35
|
}
|
34
|
-
|
35
36
|
```
|