Unity3d 开发(五)编辑器的undo操作
来源:互联网 发布:linux setfacl 编辑:程序博客网 时间:2024/05/18 02:24
div#cpmenu {height:200px;float:left;}div#cpcontent {height:200px;width:150px;float:left;}
Undo
在Unity3d编辑器扩展中,常常需要兼容Undo的操作即:Cmd/Ctrl + z
。在Unity3d对应的接口Undo.RecordObjects
可以完成这项工作。
封装
由于它的参数需要我们操作对象的组件,我为他封装了一个操作类。通过托管的方式调用。
实现
实现函数如下:
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEditor;/*Usage: var go = Selection.activeTransform; UndoOperate bc = new UndoOperate("batch Operate"); bc.Add(go,()=>{ go.localPosition = new Vector3(1,2,1); go.localScale = new Vector3(1,2,1); }); var comp = go.GetComponent<Test>(); bc.Add(comp,()=>{ comp.str= "Hello SongYang"; }); bc.Flush();*/public class UndoOperate { public delegate void Callback(); List<Object> targetList = new List<Object>(); List<Callback> callList = new List<Callback>(); string m_name; public UndoOperate(string name) { m_name = name; } public void Add(Object obj,Callback call) { targetList.Add(obj); callList.Add(call); } public void Flush() { Undo.RecordObjects(targetList.ToArray(),m_name); foreach(var each in callList) { each(); } }};
如果你觉得这篇文章对你有帮助,可以顺手点个顶,不但不会喜当爹,还能让更多人能看到它...
3 1
- Unity3d 开发(五)编辑器的undo操作
- Unity3d实现回滚操作(Undo和Redo)
- Unity3d编辑器内部拖拽类操作的注意事项
- Unity3d Undo
- Unity3D编辑器开发体验(1)-OOForm
- Unity3D编辑器开发体验(2)-OOForm
- Unity3D编辑器开发体验(3)-OOForm
- 【Unity3D游戏开发学习笔记】(二)Unity3D编辑器总览
- DontDestroyOnLoad(Unity3D开发之五)
- 关于undo的常用操作
- 剖析一个事物的操作流程(undo的作用)
- Unity3D编辑器扩展(三)之对选中对象的操作(Selection类)
- Unity3D学习之(脚本编辑器实现各种类的操作)
- 【Unity3d】在编辑器中实现位操作(Bit)的编辑
- 字符的替换及撤销(Undo操作)
- UNDO相关问题总结(五)
- 根据metalink脚本学习undo(五)
- UNDO相关问题总结(五)
- CentOS 6.5部署安装Memcached
- PHP递归实现无限级分类
- 如何限制对象只能建立在堆上或者栈上
- 项目32.6 输出小星星
- 笔记:Oracle SQL 高级查询简介 (2) 分析函数
- Unity3d 开发(五)编辑器的undo操作
- 怎样在 CentOS 7.0 上安装和配置 VNC 服务器
- ORACLE中RECORD、VARRAY、TABLE的使用详解
- UITableViewDelegate方法
- 概率论 基本概率模型、分布、期望和方差
- the way of learning Data Mining
- Java入门之路-1
- jQuery对象级插件示例
- Java字符转码