target | ダーティとしてマークされたオブジェクト |
target
のオブジェクトをダーティとしてマークします(シーンに含まれないオブジェクトだけに使うのが適切です)。
注意: Unity 5.3 より前は、SetDirty はオブジェクトにダーティとマーク付けする主要な方法でした。5.3 以降マルチシーン編集の導入に伴い、シーンのオブジェクトを変更するときにこの関数は使用されなくなりました。 この関数は今後、新しいバージョンの Unity で廃止される可能性があります。.
変更以前は、このコマンドは、オブジェクトにダーティの印をつけ保存を必然とするために、エディタースクリプトの一部として使用されていました。このコマンドがシーンのオブジェクトに使用されると、シーンファイル自体もダーティとしてマークされてしまいます。したがって、エディタースクリプトを使用してシーンオブジェクトを変更し、そのエディタースクリプトにこの関数が含まれていると、そのエディターを閉じ他のシーンに移ろうとするときに、作業しているものを保存するよう要求されます。
変更以降、このコマンドがシーンオブジェクトに使用される場合、シーンそのものがダーティとマークされることはなくなりました。つまり、エディタースクリプトでシーンオブジェクトを変更し、スクリプトで SetDirty を利用しても、シーンに暗示的に印をつけ、保存を要求することができなくなりました。もし、手動で保存することなしにエディターを閉じたり他のシーンに移ったりすると、Unity から保存のプロンプトが示されることなく、変更した内容は警告なしに消失してしまいます。
代わりに、カスタムインスペクターでプロパティーを変更する場合は、エディタースクリプトで SerializedObject 関数を使用するか、他のタイプのエディタースクリプトでオブジェクトを変更する前に Undo.RecordObject を使用します。これにより、オブジェクトのシーンをダーティと印付けしてから、エディターで取り消し (undo) がエントリーされます。
一般的に、特別な理由がない限り、エディタースクリプトで取り消し処理を行います。ただし、スクリプトでシーン内の変更を行う場合や、特に変更の取り消しエントリーを加えたくない場合は EditorSceneManager.MarkSceneDirty を使用します。
カスタムエディターを使用してコンポーネントかアセットの連続したプロパティーを変更する場合は、SerializedObject.FindProperty、SerializedObject.Update、EditorGUILayout.PropertyField、SerializedObject.ApplyModifiedProperties を使用します。これらによって、変更されたオブジェクトとシーンに「ダーティ」と印をつけてから、元に戻します。
したがって、この関数を使うただ 1 つの状況は、他の手段を通じてシーンオブジェクトでないオブジェクトを変更し、しかも、特に変更手順に取り消し (undo) 手続きを入れたくない場合です。このようなケースはほとんどなく、どうしても必要な場合を除いては、このコマンドを使用すべきではありません。
Unity ではデータが変更されているが、ディスクには保存されておらず保存する必要がある場合にダーティフラグを使用します。