巧妙设置编辑为dirty

一。XXX extends DiagramDocumentEditor
private boolean dirty = false; //是否被修改
public boolean isDirty() {

return super.isDirty() || dirty;
}
/**
* @generated NOT
*/
public void setDirty(boolean dirty) {

if (isDirty() != dirty) {

this.dirty = dirty;

firePropertyChange(IEditorPart.PROP_DIRTY);
}
}

二。extends FormEditor 多页编辑器
private boolean dirty = false; // 是否修改的标识
@Override
public boolean isDirty() {
return dirty;
}
public void setDirty(boolean dirty) {
if (this.dirty != dirty) {
this.dirty = dirty;
editorDirtyStateChanged();
}
}
三。多页编辑器的其中一页extends FormPage
private boolean dirty = false; // 是否被修改
@Override
public boolean isDirty() {
return dirty;
}
public void setDirty(boolean dirty) {
this.dirty = dirty;
}
public void doSave(IProgressMonitor monitor) {
父编辑器[主编辑器]profileEditor.setDirty(false);

//当某一个属性改变时,需调用此方法
public void setDirtyAfterModify() {
profileEditor父编辑器[主编辑器].setDirty(true);
setDirty(true);
}

四。最普通的编辑器 extends EditorPart
@Override
public boolean isDirty() {
return dirty;
}

public void setDirty() {
firePropertyChange(IEditorPart.PROP_DIRTY);
}
doSave(){
dirty = false;
}
### 使用Dirty标记或处理Unity Editor中的Dirty标志 在Unity编辑器中,`MarkDirty` 是一种机制,用于通知Unity某个对象的状态发生了变化,从而触发序列化或其他必要的更新操作。这通常涉及修改Inspector窗口的内容、保存场景或资产文件等。 #### MarkDirty 的基本概念 当一个可序列化的对象被更改时,Unity需要知道这些更改以便能够正确地保存它们到磁盘上或者重新渲染UI界面。通过调用 `EditorUtility.SetDirty(target)` 方法可以手动设置目标对象为脏状态(dirty),这意味着该对象已经被修改并需要保存[^3]。 以下是实现这一功能的一个简单例子: ```csharp using UnityEngine; using UnityEditor; public class Example : MonoBehaviour { public int someValue = 0; [ContextMenu("Increment Value")] void IncrementValue() { someValue++; // Notify Unity that this gameobject has been changed. EditorUtility.SetDirty(this); } } ``` 在这个脚本里定义了一个上下文菜单项来增加变量someValue的值,并且每次改变之后都会调用SetDirty方法告诉Unity这个GameObject已经改变了所以应该将其视为“脏”的。 #### 处理 Dirty 标志的具体情况 如果遇到与Dirty有关的问题,则可能是因为未能适当地标记某些数据结构作为已变更或者是由于性能考虑而避免频繁地标记物体变更为脏态。对于前者可以通过上述方式解决;而对于后者则需评估实际需求再决定是否真的有必要每次都执行这样的操作[^1]。 另外值得注意的是,在特定情况下比如批量创建大量预制件实例的时候,连续多次调用 SetDirty 可能会影响效率因此建议优化此类流程减少不必要的开销[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值