当前位置:网站首页>unity编辑器扩展界面使用 List
unity编辑器扩展界面使用 List
2022-08-10 00:41:00 【王源骏】
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(TeachTool))]
public class TeachTool : EditorWindow
{
[MenuItem("ConfigTool/添加图片或者视频")]
public static void ConfigTool()
{
//创建面板
EditorWindow.GetWindow(typeof(TeachTool));
}
public UnityEngine.Object setting;
[SerializeField]
public List<Sprite> spriteLiset=new List<Sprite>();//图片的List
//序列化对象
protected SerializedObject _serializedObject;
protected SerializedObject _serializedObject2;
//序列化属性
protected SerializedProperty _assetLstProperty;
protected SerializedProperty _assetLstProperty2;
[SerializeField]
public List<UnityEngine.Object> MediaLiset = new List<UnityEngine.Object>();
public string tempFiled = "";
private void OnEnable()
{
}
private void OnGUI()
{
GUILayout.Label("面板", EditorStyles.boldLabel);
//配置文件 这个可以忽略 因为我写的这个工具是修改自己工程内配置文件的
setting = EditorGUILayout.ObjectField(setting, typeof(TeachPointSetting), true);
//输入框
tempFiled = EditorGUILayout.TextField("名字:", tempFiled);
//设置间距
EditorGUILayout.Space(20);
//初始化
_serializedObject = new SerializedObject(this);
//获取当前类中可序列化的属性
_assetLstProperty = _serializedObject.FindProperty("spriteLiset");
//更新
_serializedObject.Update();
//开始检查是否有修改
EditorGUI.BeginChangeCheck();
//显示属性,第二个参数必须为true 否者无法显示子节点即List内容
EditorGUILayout.PropertyField(_assetLstProperty, true);
//结束检查是否有修改
if (EditorGUI.EndChangeCheck())
{
_serializedObject.ApplyModifiedProperties();
}
//设置间距
EditorGUILayout.Space(10);
//添加按钮
if(GUILayout.Button("确认添加图片"))
{
SetSprsite();
}
//设置间距
EditorGUILayout.Space(20);
_serializedObject2 = new SerializedObject(this);
_assetLstProperty2 = _serializedObject2.FindProperty("MediaLiset");
//更新
_serializedObject2.Update();
//开始检查是否有修改
EditorGUI.BeginChangeCheck();
//显示属性,第二个参数必须为true 否者无法显示子节点即List内容
EditorGUILayout.PropertyField(_assetLstProperty2, true);
//结束检查是否有修改
if (EditorGUI.EndChangeCheck())
{
_serializedObject2.ApplyModifiedProperties();
}
//设置间距
EditorGUILayout.Space(10);
//添加按钮
if (GUILayout.Button("确认添加视频"))
{
SetMedia();
}
}
/// <summary>
/// 修改图片
/// </summary>
public void SetSprsite()
{
//修改图片逻辑
}
public void SetMedia()
{
//修改视频逻辑
}
}

参考资料
https://blog.csdn.net/w_mumu_q/article/details/107240127
https://blog.csdn.net/puppet_master/article/details/51012298
https://blog.csdn.net/qq_35361471/article/details/84713382
边栏推荐
猜你喜欢

Win7怎么把控制面板添加到右键菜单

XSS高级 svg 复现一个循环问题以及两个循环问题

基于Web的疫情隔离区订餐系统

Pyscript,创建一个能执行crud操作的网页应用

Win11怎么关闭系统保护功能?系统保护还原功能怎么关闭?

跳房子游戏

CAS:851113-28-5 (Biotin-ahx-ahx-tyramine)

What should I do if there is no sound after reinstalling the system in win10?

Docker interview question 2--get the number of database connections and docker-compose

assert利用蚁剑登录
随机推荐
Penetration Testing and Offensive and Defense Confrontation - Vulnerability Scanning & Logic Vulnerability (Part1)
ITK编译remote库
数据的存储——C语言
mstsc/Mstsc (Microsoft terminal services client)远程桌面连接
-采花生-
c语言结构体、函数以及指针练习(简单通讯录)
pyhton之问~~~~~if __name__ == ‘__main__‘:是什么?
生物素叠氮化物中的(CAS:1527486-16-3TAMRA-azide-PEG3-Biotin)反应的特点!
【毕业设计】 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI
FITC标记生物素(FITC-生物素|CAS:134759-22-1)有哪些知识了?
罗彻斯特大学 | 现在是什么序列?蛋白质序列的贝叶斯优化的预训练集成
人际关系不仅要“存”,更要“激活”!
使用 apxs 构建和安装 Apache 扩展共享对象模块
【ROS2原理10】Interface数据的规定
由生物素参与的D-Biotinol,CAS号:53906-36-8具体特性说明
CMake 编译运行dpdk项目程序
GBJ1510-ASEMI机器人电源整流桥GBJ1510
Aptos 深度解读:机遇、挑战与风险
PEG 衍生物Biotin-PEG1-OH(cas:95611-10-2,2-生物素氨基乙醇)优势说明
Docker 面试题2则--取数据库连接数和docker-compose