質問編集履歴
12
脱字
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
9
|
|
10
10
|
1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
|
11
|
-
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
|
11
|
+
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~**全てが**Null値となってしまいました.
|
12
12
|
**追記:また,JSONファイル側のnullを適当な数値に書き換えてnullを含まないJSONファイルを読み込んでも,全てNullとして読み込まれました.**
|
13
13
|
|
14
14
|
2. 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
|
11
脱字
title
CHANGED
File without changes
|
body
CHANGED
@@ -159,7 +159,7 @@
|
|
159
159
|
### 追記
|
160
160
|
|
161
161
|
調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.
|
162
|
-
そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
|
162
|
+
そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータ渡しには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
|
163
163
|
今後はnull許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を検討してみる事にします.
|
164
164
|
|
165
165
|
|
10
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -158,8 +158,11 @@
|
|
158
158
|
|
159
159
|
### 追記
|
160
160
|
|
161
|
-
調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.
|
161
|
+
調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.
|
162
|
+
そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
|
163
|
+
今後はnull許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を検討してみる事にします.
|
162
164
|
|
165
|
+
|
163
166
|
[Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
|
164
167
|
> null許容型は値が定義されていようが全てnullになってしまうみたいです
|
165
168
|
|
9
Debug.Log("pos1 x:"+item.x); →Debug.Log(item.x);に変更して試してみました.
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,14 +6,19 @@
|
|
6
6
|
### 発生している問題・試した事
|
7
7
|
|
8
8
|
以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
|
-
- この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
|
10
|
-
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
|
11
9
|
|
10
|
+
1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
|
11
|
+
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
|
12
|
-
|
12
|
+
**追記:また,JSONファイル側のnullを適当な数値に書き換えてnullを含まないJSONファイルを読み込んでも,全てNullとして読み込まれました.**
|
13
13
|
|
14
|
+
2. 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
|
15
|
+
|
16
|
+
**以上の事から,恐らくJsonUtilityとnull許容値型との相性が悪いのではないかと思われます.**
|
17
|
+
|
14
|
-
|double?型 とした時|double型 とした時|
|
18
|
+
|1.double?型 とした時|2.double型 とした時|
|
15
19
|
|:--:|:--:|
|
20
|
+
|全てnullとなる.**また,JSONファイルでnull値になっている部分を通常の数値に書き換えても全ても同じ.**|JSONで null の部分は0に変換され,それ以外の数値は正常に読み込まれる.|
|
16
|
-
|||
|
17
22
|
|
18
23
|
### 該当のソースコード
|
19
24
|
|
@@ -55,21 +60,20 @@
|
|
55
60
|
//確認の為出力すると,上手く行かない
|
56
61
|
foreach(var item in coordinate.pos1)
|
57
62
|
{
|
58
|
-
Debug.Log(
|
63
|
+
Debug.Log(item.x);
|
59
64
|
}
|
60
65
|
foreach(var item in coordinate.pos2)
|
61
66
|
{
|
62
|
-
Debug.Log(
|
67
|
+
Debug.Log(item.x);
|
63
68
|
}
|
64
69
|
foreach(var item in coordinate.pos3)
|
65
70
|
{
|
66
|
-
Debug.Log(
|
71
|
+
Debug.Log(item.x);
|
67
72
|
}
|
68
73
|
foreach(var item in coordinate.pos4)
|
69
74
|
{
|
70
|
-
Debug.Log(
|
75
|
+
Debug.Log(item.x);
|
71
76
|
}
|
72
|
-
}
|
73
77
|
void Update()
|
74
78
|
{
|
75
79
|
}
|
@@ -154,6 +158,11 @@
|
|
154
158
|
|
155
159
|
### 追記
|
156
160
|
|
157
|
-
|
161
|
+
調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.null許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を試してみます.
|
162
|
+
|
163
|
+
[Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
|
158
164
|
> null許容型は値が定義されていようが全てnullになってしまうみたいです
|
165
|
+
|
166
|
+
[JSON Utility creates empty classes instead of null
|
159
|
-
|
167
|
+
](https://forum.unity.com/threads/json-utility-creates-empty-classes-instead-of-null.471047/)
|
168
|
+
> null serialized classes will get filled out with default values when you deserialize them.
|
8
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -150,4 +150,10 @@
|
|
150
150
|
また,UnityのProject Settings>Playerの一部項目の設定についてです.UnityもC#も全くの入門者なのでまだあまり良く理解出来ておりませんが,この部分の設定がC#で扱える機能に関わると聞いたので,ご参考になればと載せておきます.(ひょっとすると不要な情報かもしれませんが…)
|
151
151
|

|
152
152
|
|
153
|
-
宜しくお願い致します.
|
153
|
+
宜しくお願い致します.
|
154
|
+
|
155
|
+
### 追記
|
156
|
+
|
157
|
+
以下のサイトにこの問題に関する記載と,解決策の提示があったので試してみようと思います.
|
158
|
+
> null許容型は値が定義されていようが全てnullになってしまうみたいです
|
159
|
+
[Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
|
7
語彙が違った
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
【Unity C#】null許容型変数に JsonUtilityでJSONから値を読み込めない
|
1
|
+
【Unity C#】null許容値型変数に JsonUtilityでJSONから値を読み込めない
|
body
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
お世話になっております.
|
3
3
|
|
4
|
-
UnityのC#でJsonUtilityを使用して,null許容型の変数にJSON形式のデータから値を読み込みたいです.
|
4
|
+
UnityのC#でJsonUtilityを使用して,null許容値型の変数にJSON形式のデータから値を読み込みたいです.
|
5
5
|
|
6
6
|
### 発生している問題・試した事
|
7
7
|
|
8
8
|
以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
|
-
- この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
|
9
|
+
- この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
|
10
10
|
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
|
11
11
|
|
12
12
|
- 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
|
@@ -34,7 +34,7 @@
|
|
34
34
|
public Position4[] pos4;
|
35
35
|
}
|
36
36
|
[System.Serializable] public class Position1
|
37
|
-
{ //null許容型にすると値が一切読み込まれない
|
37
|
+
{ //null許容値型にすると値が一切読み込まれない
|
38
38
|
//通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
|
39
39
|
public double? x;
|
40
40
|
public double? y;
|
6
載せたjsonファイルを間違えた
title
CHANGED
File without changes
|
body
CHANGED
@@ -86,7 +86,7 @@
|
|
86
86
|
"z": null
|
87
87
|
},
|
88
88
|
{
|
89
|
-
"x": 15523,
|
89
|
+
"x": -15523.5600045,
|
90
90
|
"y": 555,
|
91
91
|
"z": 6.66
|
92
92
|
},
|
5
クラスについての説明を分かりやすくした
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
### 発生している問題・試した事
|
7
7
|
|
8
|
-
以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
8
|
+
以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
9
|
- この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
|
10
10
|
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
|
11
11
|
|
4
定義したクラスについての説明が間違っていた
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
namespace hoge{
|
28
28
|
|
29
|
-
[System.Serializable] public class Coordinate //
|
29
|
+
[System.Serializable] public class Coordinate //Position1~4について,複数組のx,y,z座標値を格納したい
|
30
30
|
{
|
31
31
|
public Position1[] pos1;
|
32
32
|
public Position2[] pos2;
|
3
微修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
9
|
- この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
|
10
|
-
値が正しく代入されたか確認する為にUnityのコンソールに全ての
|
10
|
+
値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
|
11
11
|
|
12
12
|
- 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
|
13
13
|
|
2
微修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
### 発生している問題・試した事
|
7
7
|
|
8
|
-
以下の様な
|
8
|
+
以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
|
9
9
|
- この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
|
10
10
|
値が正しく代入されたか確認する為にUnityのコンソールに全ての地点の全ての変数xの値を出力した所,何も出力されませんでした.
|
11
11
|
|
1
微修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
}
|
36
36
|
[System.Serializable] public class Position1
|
37
37
|
{ //null許容型にすると値が一切読み込まれない
|
38
|
-
//通常の
|
38
|
+
//通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
|
39
39
|
public double? x;
|
40
40
|
public double? y;
|
41
41
|
public double? z;
|