2013年6月8日土曜日

Unity Tips #53 Undo.IncrementCurrentEventIndexについて

前回に引き続いて Unify Wiki から Undo.IncrementCurrentEventIndex という聞きなれない関数について翻訳を紹介する:



http://wiki.unity3d.com/index.php/Tip_of_the_day
Feb 2013

Tip #53 Undo.IncrementCurrentEventIndex

Undo.IncrementCurrentEventIndexについて


Undo.IncrementCurrentEventIndex を使用することで、Unity が短時間で連続に行なった多くのアクションを取り消すよりも、エディタスクリプトがシングルアクションを取り消すことが出来ます。コードを実行する前に Editor フォルダに配置して下さい。

Create Object ボタンにより 10 個のキューブが作成され、各々についてUndo.RegisterCreatedObjectUndo をコールします。このボタンをクリックして Ctrl + Z を押下して作成された全てオブジェクトを取り消して下さい。

ふたつめのボタン Create Single Object は 10 個のキューブが作成されますが、さらにUndo.IncrementCurrentEventIndex メソッドをコールして作成された各々のオブジェクトが、別の取り消しアクションを持つべきことをUnity に通知します。Create Single Object をクリックして 10 個のキューブ作成して、Ctrl + Z を押下することで各々のオブジェクトの作成を個別に取り消して下さい。

備考:この記載の時点では、Unity ドキュメントには Undo.IncrementCurrentEventIndex に関する記載がなく、結果は 0 件になります。
    using UnityEngine;
    using UnityEditor;
 
    public class UndoTest : EditorWindow
    {
 
        public void OnGUI()
        {
            if (GUILayout.Button("create object"))
            {
                this.Create(false);
            }
            if (GUILayout.Button("create single object"))
            {
                this.Create(true);
            }
 
            GUILayout.Label("use ctrl+z to undo each action");
        }
 
        private void Create(bool single)
        {
            for (int i = 0; i < 10; i++)
            {
                if (single)
                {
                    Undo.IncrementCurrentEventIndex();
                }
 
                var obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
                obj.transform.position = new Vector3(Random.Range(-10, 10), Random.Range(-10, 10), Random.Range(-10, 10));
 
                Undo.RegisterCreatedObjectUndo(obj, "create " + obj.name);
            }
        }
 
        [MenuItem("CBX/UndoTest")]
        public static void ShowWindow()
        {
            GetWindow<UndoTest>("UndoTest").Show();
        }
    }
--------------

うーん、公式ドキュメントにないものは使用継続できるか分からないからなぁー。

それでも便利なTips。知識として積み重ねようぜ!

0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿