unity编辑器拓展十二——储存工具栏的数据

大多数时候  我做的unity工具都是一次性的,也就是在场景中操作,关闭unity再打开,或者关闭工具再打开的时候,都没有保存工具上的操作数据;如图:

 

这是在unity里面拖拽两张贴图上去,然后就可以对这两张贴图做各种处理  处理完将贴图保存进unity,但是如果我下次打开的时候,我这两张贴图已经丢失了,又是下面的这种状态,也就是说这些数据没有被保留在工具里。现在想做的就是希望下次打开的时候,上次操作过的两张图还在上面

需要用的知识是:   EditorPrefs.SetString     EditorPrefs.SetFloat    EditorPrefs.SetInt    EditorPrefs.SetBool

EditorPrefs.GetString     EditorPrefs.GetFloat    EditorPrefs.GetInt    EditorPrefs.GetBool

有四种类型可以被保存,比如我们要保存图片,那么我们可以把图片的path以string的方式来保存,当打开工具初始化的时候,按照保存的路径将贴图实例化出来就可以了

代码如下:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;



public class TextureCombine : EditorWindow
{
    //定义两张贴图
    Texture2D tex1;
    Texture2D tex2;

    //保存数据的path
    //--------------------------------------
    string path01 = "";
    string path02 = "";
    const string save01 = "savepath01";
    const string save02 = "savepath02";
    //--------------------------------------
    [MenuItem("Tools/保存数据")]

    static void window()
    {
        TextureCombine win = (TextureCombine)EditorWindow.GetWindow(typeof(TextureCombine), false, "合并贴图", false);
        win.position = new Rect(200, 200, 250, 200);
        win.Show();
    }
    //打开工具时候就开始初始化 取出保存的路径  然后将贴图根据路径初始化
    //---------------------------------------------
    void OnEnable()
    {
        path01 = EditorPrefs.GetString(save01, path01);
        path02 = EditorPrefs.GetString(save02, path02);
        tex1 = (Texture2D)AssetDatabase.LoadAssetAtPath<Texture2D>(path01);
        tex2 = (Texture2D)AssetDatabase.LoadAssetAtPath<Texture2D>(path02);
    }
    //-------------------------------------------
   

    private void OnGUI()
    {
        GUILayout.BeginVertical();
        {
            GUILayout.BeginHorizontal();
            {
                GUILayout.Space(180);
                EditorGUILayout.LabelField("偏色贴图");
            }
            GUILayout.EndHorizontal();

            tex1 = EditorGUILayout.ObjectField("", tex1, typeof(Texture2D), true) as Texture2D;

            GUILayout.BeginHorizontal();
            {
                GUILayout.Space(180);
                EditorGUILayout.LabelField("高光贴图");
            }
            GUILayout.EndHorizontal();
            tex2 = EditorGUILayout.ObjectField("", tex2, typeof(Texture2D), true) as Texture2D;
   
        }
        GUILayout.EndVertical();


        if (GUI.Button(new Rect(173, 173, 70, 20), "save"))
        {
            if (tex1!=null && tex2 != null)
            {

//取到拖进去的两张图片的路径  并保存
//----------------------------------------------------
                path01 = AssetDatabase.GetAssetPath(tex1);
                path02 = AssetDatabase.GetAssetPath(tex2);
                EditorPrefs.SetString(save01, path01);
                EditorPrefs.SetString(save02, path02);
//-----------------------------------------------------

            }
            else
                this.ShowNotification(new GUIContent("没有贴图"));
        }
    }


    
}





   
	
	



 

 

 

点save的时候  这两张图片就永远被保留在本地机器上

最近在研究一个工具:将一部分数值永久记录下来  然后赋值给每个新的物体,就用了这个方法。这样方便美术

不然还的美术每次开始用工具的时候,先输入一遍数值,以关掉下次又得输入一次 比较麻烦

    

亲,如果您觉得本文不错,愿意给我一些动力的话,请用手机扫描二维码即可向我打赏

                                         打赏

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity编辑器拓展Editor Extension)可以通过自定义的脚本来扩展Unity编辑器的功能和界面,以满足特定项目的需求。通过编辑器拓展,开发者可以创建自定义的编辑器窗口、工具栏按钮、菜单项、检视面板等,来增强Unity编辑器的功能和流程。 要创建一个Unity编辑器拓展,你可以使用C#编写一个继承自Editor类的脚本。这个脚本可以通过Unity的Inspector面板来设置相关的属性和行为。以下是一个简单的示例: ```csharp using UnityEngine; using UnityEditor; public class MyEditorExtension : EditorWindow { [MenuItem("Custom Tools/My Editor Window")] public static void OpenWindow() { // 创建并打开一个自定义的编辑器窗口 MyEditorExtension window = (MyEditorExtension)EditorWindow.GetWindow(typeof(MyEditorExtension)); window.Show(); } private void OnGUI() { // 在编辑器窗口中绘制UI元素 GUILayout.Label("Hello, I am a custom editor window!"); if (GUILayout.Button("Click Me")) { Debug.Log("Button clicked!"); } } } ``` 上述代码创建了一个自定义的编辑器窗口,并在窗口中绘制了一个标签和一个按钮。通过在Unity编辑器中点击"Custom Tools"菜单下的"My Editor Window",可以打开这个自定义的编辑器窗口。 除了编辑器窗口,你还可以通过继承Editor类来创建自定义的检视面板、菜单项等。Unity官方文档中有更详细的教程和示例,可以帮助你更深入地了解和使用Unity编辑器拓展
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值