質問編集履歴

1

分からないスクリプトを添付いたしました。答えづらい質問申し訳ございません。

2021/04/14 09:20

投稿

akatyann
akatyann

スコア2

test CHANGED
@@ -1 +1 @@
1
- EditorUtility.SetDirtyと RecordObjectの使い方を教えてほしいです。
1
+ EditorUtility.SetDirtyの使い方を教えてほしいです。
test CHANGED
@@ -2,16 +2,166 @@
2
2
 
3
3
 
4
4
 
5
- ですが、EditorUtility.SetDirtyと RecordObjectの使い教えほしいで
5
+ 現在、unityでゲームを作る勉強をしてる最中ですが、参考にしたスクリプトの中に EditorUtility.SetDirtyという物が使われてたのですが、これがどういう働きするものなのか公式のリファレンスを翻訳し読んでみても、まいち理解が出来ませんした
6
6
 
7
7
 
8
8
 
9
- 現在、ユーチューブで2Dゲームの作り方を勉強しおり、そ中のクリプトに上の物が登場したですが、これがどういう役割を果たす物なのかが分かりません
9
+ 引数に入れいる「gridProperties」はTilemapのステータスを記したScriptableObjectです。
10
+
11
+ ```using UnityEditor;
12
+
13
+ using UnityEngine;
14
+
15
+ using UnityEngine.Tilemaps;
10
16
 
11
17
 
12
18
 
13
- 公式のリファレンスを翻訳して読んでみても、いまいち理解が出来ませんでした。
19
+ [ExecuteAlways]
14
20
 
15
21
 
16
22
 
23
+ public class TilemapGridProperties : MonoBehaviour
24
+
25
+
26
+
27
+ {
28
+
29
+ private Tilemap tilemap;
30
+
31
+ private Grid grid;
32
+
33
+ [SerializeField] private SO_GridProperties gridProperties = null;
34
+
35
+ [SerializeField] private GridBoolProperty gridBoolProperty = GridBoolProperty.diggable;
36
+
37
+
38
+
39
+
40
+
41
+ private void OnEnable()
42
+
43
+ {
44
+
45
+ if (!Application.IsPlaying(gameObject));
46
+
47
+ {
48
+
49
+ tilemap = GetComponent<Tilemap>();
50
+
51
+
52
+
53
+ if (gridProperties != null)
54
+
55
+ {
56
+
57
+ gridProperties.gridPropertyList.Clear();
58
+
59
+ }
60
+
61
+ }
62
+
63
+ }
64
+
65
+
66
+
67
+ private void OnDisable()
68
+
69
+ {
70
+
71
+ if (!Application.IsPlaying(gameObject))
72
+
73
+ {
74
+
75
+ UpdateGridProperties();
76
+
77
+
78
+
79
+ if (gridProperties != null)
80
+
81
+ {
82
+
83
+ EditorUtility.SetDirty(gridProperties);
84
+
85
+ }
86
+
87
+ }
88
+
89
+ }
90
+
91
+
92
+
93
+ private void UpdateGridProperties()
94
+
95
+ {
96
+
97
+ //Compress timemap bounds
98
+
99
+ tilemap.CompressBounds();
100
+
101
+
102
+
103
+ //Only populate in the editor
104
+
105
+ if (!Application.IsPlaying(gameObject))
106
+
107
+ {
108
+
109
+ if (gridProperties != null)
110
+
111
+ {
112
+
113
+ Vector3Int startCell = tilemap.cellBounds.min;
114
+
115
+ Vector3Int endCell = tilemap.cellBounds.max;
116
+
117
+
118
+
119
+ for(int x = startCell.x; x < endCell.x; x++)
120
+
121
+ {
122
+
123
+ for(int y = startCell.y; y < endCell.y; y++)
124
+
125
+ {
126
+
127
+ TileBase tile = tilemap.GetTile(new Vector3Int(x, y, 0));
128
+
129
+
130
+
131
+ if (tile != null)
132
+
133
+ {
134
+
135
+ gridProperties.gridPropertyList.Add(new GridProperty(new GridCoordinate(x, y), gridBoolProperty, true));
136
+
137
+ }
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ private void Update()
150
+
151
+ {
152
+
153
+ if (!Application.IsPlaying(gameObject))
154
+
155
+ {
156
+
157
+ Debug.Log("DISABLE PROPERTY TILMAPS");
158
+
159
+ }
160
+
161
+ }
162
+
163
+ コード
164
+
165
+ ```
166
+
17
- とても情けない質問で申し訳のですが、どな簡単にお教え願えないでしょうかよろしくお願いします。
167
+ 分かりづらい質問で本当に申し訳ござませんが、EditorUtility.SetDirtyがういう働きをする物かお教え願えないでしょうかよろしくお願いします。