首页 > 其他分享 >【Unity】记录一下:自定义组件的InspectorGUI面板,修改数据不保存问题

【Unity】记录一下:自定义组件的InspectorGUI面板,修改数据不保存问题

时间:2023-05-30 22:45:47浏览次数:45  
标签:obj target 自定义 InspectorGUI Unity MerryGoRound serializedObject var public

使用target修改之后需要使用EditorUtility.SetDirty设置为脏,但是要注意的是应该设置target所指代的组件,而非是对.gameObject 设置为脏,这是没有用的。

[CustomEditor(typeof(MerryGoRound))]
public class MerryGoRoundEditor : Editor
{
    public override void OnInspectorGUI()
    {
        var obj = target as MerryGoRound;

        EditorGUI.BeginChangeCheck();
        obj.rudis = EditorGUILayout.FloatField("半径", obj.rudis);
        obj.viry = EditorGUILayout.FloatField("幅度", obj.viry);

        if(EditorGUI.EndChangeCheck() && !EditorUtility.IsDirty(target))
            EditorUtility.SetDirty(target);
    }
}

还有一种办法是,根据serializedObject修改对应的变量值,但是这个办法比较麻烦。推荐用第一种的,记住设置target为脏而不是对于的gameobject。

[CustomEditor(typeof(MerryGoRound))]
public class MerryGoRoundEditor : Editor
{
    public override void OnInspectorGUI()
    {
        var obj = target as MerryGoRound;
        var prop = serializedObject.FindProperty("rudis");
        prop.floatValue = EditorGUILayout.FloatField("半径", prop.floatValue);

        if(serializedObject.hasModifiedProperties)
            serializedObject.ApplyModifiedProperties();
    }
}

标签:obj,target,自定义,InspectorGUI,Unity,MerryGoRound,serializedObject,var,public
From: https://www.cnblogs.com/itcod/p/17444692.html

相关文章

  • unity3d 不销毁物品
    在游戏中,经常需要用到一个类似于static的功能,想要一个参数一直使用,如生命值、登陆状态等。方案一使用static,如在gamemanager脚本中设置publicstaticboolis_login=false;在其他脚本中,不需要gameobject,直接调用脚本即可boolget=gamemanager.is_login;但是缺点是,只......
  • Unity框架与.NET, Mono框架的关系
    什么是C#C#是一种面向对象的编程语言。什么是.NET.NET是一个开发框架,它遵循并采用CIL(CommonIntermediateLanguage)和CLR(CommonLanguageRuntime)两种约定,CIL标准为一种编译标准:将不同编程语言(C#,JS,VB等)使用各自的编译器,按照统一的标准编译成语义一致的CIL中间码,......
  • Unity_Photon
    PhotonPhoton搭建(2条消息)【Unity3D】Photon环境搭建_photon框架_little_fat_sheep的博客-CSDN博客连接云服务器主要代码:PhotonNetwork.ConnectUsingSettings();usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingPhoton.Pun;using......
  • NavigationTabBar 自定义底部导航栏
    先来页面效果导入依赖implementation'devlight.io:navigationtabbar:1.2.5'先创建三个Fragment,贴出其中一个Fragment的代码 fragment_home.xml<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="......
  • 记录--Vue3自定义一个Hooks,实现一键换肤
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助核心使用CSS变量,准备两套CSS颜色,一套是在light模式下的颜色,一套是在dark模式下的颜色dark模式下的CSS权重要比light模式下的权重高,不然当我们给html添加自定义属性[data-theme='dark']的时候,dark......
  • 自定义方法,实现按指定属性进行去重
    实例:根据age、sex、name对user对象集合进行去重//构建user对象publicclassUser{privateintid;privateStringname;privateintage;privateStringsex;privatedoubleheight;//构造方法、getter和setter略}//创建对象集合List<User......
  • Unity中根据平面的多边形点的数据,生成简单的立体网格
    todo 最近需要一个功能,就是根据给定的多边形顶点(按照顺时针或者逆时针这样的顺序),然后生成一个具有高度,投影与多边形一样的一个Mesh。效果如下,比如给定以下的一些顶点的位置         https://blog.csdn.net/lxbhahaha/article/details/111687476......
  • Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏
    项目场景:用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。问题描述:极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:跟这张图一样的<hrstyle="bor......
  • priority_queue自定义比较函数的两种方法
    1#include<iostream>2#include<vector>3#include<queue>4usingnamespacestd;5intmain(){6structListNode{7intval;8ListNode*next;9ListNode():val(0),next(nullptr){}10L......
  • vscode 自定义代码字体颜色,局部变量、全局变量、函数、宏、属性
    vscode自定义代码字体与颜色风格在setting.json中修改即可:在这里插入图片描述"editor.semanticTokenColorCustomizations":{       "enabled":true,//enableforallthemes       "rules":{           "*.static":{             ......