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

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

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

Q&A

解決済

1回答

3080閲覧

EditorUtility.SetDirtyの使い方を教えてほしいです。

akatyann

総合スコア2

0グッド

0クリップ

投稿2021/04/14 08:23

編集2021/04/14 09:20

こんにちは、いつもお世話になっております。

現在、unityでゲームを作る勉強をしている最中なのですが、参考にしたスクリプトの中に EditorUtility.SetDirtyという物が使われていたのですが、これがどういう働きをするものなのか公式のリファレンスを翻訳して読んでみても、いまいち理解が出来ませんでした。

引数に入れている「gridProperties」はTilemapのステータスを記したScriptableObjectです。

using

1using UnityEngine; 2using UnityEngine.Tilemaps; 3 4[ExecuteAlways] 5 6public class TilemapGridProperties : MonoBehaviour 7 8{ 9 private Tilemap tilemap; 10 private Grid grid; 11 [SerializeField] private SO_GridProperties gridProperties = null; 12 [SerializeField] private GridBoolProperty gridBoolProperty = GridBoolProperty.diggable; 13 14 15 private void OnEnable() 16 { 17 if (!Application.IsPlaying(gameObject)); 18 { 19 tilemap = GetComponent<Tilemap>(); 20 21 if (gridProperties != null) 22 { 23 gridProperties.gridPropertyList.Clear(); 24 } 25 } 26 } 27 28 private void OnDisable() 29 { 30 if (!Application.IsPlaying(gameObject)) 31 { 32 UpdateGridProperties(); 33 34 if (gridProperties != null) 35 { 36 EditorUtility.SetDirty(gridProperties); 37 } 38 } 39 } 40 41 private void UpdateGridProperties() 42 { 43 //Compress timemap bounds 44 tilemap.CompressBounds(); 45 46 //Only populate in the editor 47 if (!Application.IsPlaying(gameObject)) 48 { 49 if (gridProperties != null) 50 { 51 Vector3Int startCell = tilemap.cellBounds.min; 52 Vector3Int endCell = tilemap.cellBounds.max; 53 54 for(int x = startCell.x; x < endCell.x; x++) 55 { 56 for(int y = startCell.y; y < endCell.y; y++) 57 { 58 TileBase tile = tilemap.GetTile(new Vector3Int(x, y, 0)); 59 60 if (tile != null) 61 { 62 gridProperties.gridPropertyList.Add(new GridProperty(new GridCoordinate(x, y), gridBoolProperty, true)); 63 } 64 } 65 } 66 } 67 } 68 } 69 private void Update() 70 { 71 if (!Application.IsPlaying(gameObject)) 72 { 73 Debug.Log("DISABLE PROPERTY TILMAPS"); 74 } 75 } 76コード

分かりづらい質問で本当に申し訳ございませんが、EditorUtility.SetDirtyがどういう働きをする物なのかお教え願えないでしょうか、よろしくお願いします。

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

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

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

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

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

fiveHundred

2021/04/14 08:26

いつどういう場面で使おうとしているかが分からないため、回答しづらいです。 「ユーチューブで2Dゲームの作り方を勉強」といっても、これだけでどんな動画なのか分かる人はエスパーしかいません。
akatyann

2021/04/14 09:18

大変失礼いたしまた。 急いで質問を書き換えます。 なにぶん学がない者でして、プログラムの理解が低いことを許しください。
hogefugapiyo

2021/04/14 09:18

何を作ろうとして、どの動画を見たのかを書くとわかる人がいるかもしれません
akatyann

2021/04/14 09:22

アドバイスありがとうございます。質問を書き換えます。
sakura_hana

2021/04/14 17:05

「EditorUtility.SetDirty」で検索するとリファレンス以外に解説サイト等が出ます。 それを見て何がわかったか・何がわからないか記載してください。
akatyann

2021/04/15 05:07

ありがとうございます。もっと調べてきます
guest

回答1

0

自己解決

リンク内容
上記のサイト様の記事を読み、SetDirtyがScriptableObjectの情報をコードから変更した場合にその変更を保存するための物だという事が分かりました。

稚拙な質問にも関わらず、コメントでアドバイスしてくれた先輩方には感謝しかありません。

本当にありがとうございました。

投稿2021/04/15 05:23

akatyann

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問