通过拖拽prefab来存储相应的路径

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEditor;
 4 using System.Reflection;
 5
 6 [CustomPropertyDrawer(typeof(ObjectToPathAttribute))]
 7 public class ObjectToPathDrawer : PropertyDrawer
 8 {
 9     Object _obj = null;
10
11     public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
12     {
13         Object target = property.serializedObject.targetObject;
14         FieldInfo fi = target.GetType().GetField(property.name);
15
16         string path = string.Empty;
17         EditorGUI.LabelField(position, label);
18         position.x += EditorGUIUtility.labelWidth * 2.0f / 3.0f;
19         if (_obj == null)
20         {
21             path = fi.GetValue(target).ToString();
22             if (!string.IsNullOrEmpty(path))
23             {
24                 _obj = AssetDatabase.LoadMainAssetAtPath(path);
25             }
26             _obj = EditorGUI.ObjectField(position, _obj, typeof(GameObject), false);
27         }
28         else
29         {
30             _obj = EditorGUI.ObjectField(position, _obj, typeof(GameObject), false);
31             path = AssetDatabase.GetAssetPath(_obj);
32             fi.SetValue(target, path);
33         }
34
35         position.x += EditorGUIUtility.labelWidth * 2.0f / 3.0f;
36         EditorGUI.TextField(position, path);
37     }
38 }

ObjectToPathDrawer

public class ObjectToPathAttribute : PropertyAttribute
{
    public string _input;
    public ObjectToPathAttribute(string matchineName)
    {
        _input = matchineName;
    }
}

ObjectToPathAttribute

using UnityEngine;
using System.Collections;

public class UITest: MonoBehaviour
{
    [ObjectToPath("UITest)]
    public string _itemPerfabPath;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
}

使用上面的代码可以通过拖拽一个prefab的方式把相应的路径直接存储到public string _itemPerfabPath里,省去键盘输入步骤。截图如下:

当prefab为空的时候的截图如下:

时间: 2024-08-01 02:15:38

通过拖拽prefab来存储相应的路径的相关文章

HTML5 鼠标拖拽以及web存储

html5 拖拽: (function(){}())执行匿名函数,要用括号包括起来: 1:用鼠标事件来做拖拽: 2:在HTML5中加入draggable="true",就可以拖拽但是是分成了两个,这个更有效率: ondragstart:拖拽开始: ondrag:拖拽中 ondragend:拖拽结束: ondragenter:进入投放去: ondragover:投放区移动: ondragleave:离开投放区: ondrop:投放区投放:           ondragover会阻止d

HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态

多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption></figcaption>: 多媒体标题 方法: load() 加载.play()播放.pause()暂停 属性: currentTime 视频播放的当前进度. duration:视频的总时间. paused:视频播放的状态 事件:   oncanplay:事件在用户可以开始播放视频/音频(aud

A1.xcode三种拖拽文件夹的方式

1.copy,是指文件不在项目的目录下面,例如项目在桌面上,文件在 Download 下,你 copy 就会被复制到项目里面.如果文件原本就在项目里面,则不执行任何操作.这里不管它,重点是 下面的单选框. 2.create  groups for any added folders 添加文件 将所有文件放在添加的目录下,实际文件目录结构忽略 访问时 直接文件名即可 黄色文件夹:编译后,资源文件在 mainBundle 中,源代码程序需要通过这种方式拖拽添加 需要注意不能出现重名的文件 效率高 拖

自己写一个jqery的拖拽插件

说实话,jQuery比原生的js好用多了,本来想用原生写的,也写出来的,只是,感觉不像插件,所以用jQuery实现了一版. 实现的功能:可以指定拖拽的边界,在拖拽过程中,可以触发几个自定义事件 先说明一下我写的插件的原则: 1.常量分离出来,放在$.zUI.插件中 2.插件的主体执行函数命名为$.zUI.插件.fn 3.销毁函数命名为$.zUI.插件.unfn 这些规范,主要是为了以后写其他插件时,放在一起,精简代码用的,以后可能还会增加其他规则,以写出一个骨架来. 拖拽的原理其实比较简单,就是

qt 拖拽 修改大小(二)

最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, showFullWindow, NULL, 0);showFullWindow是一个变量,如果需要windows默认支持橡皮筋则需要传递参数false,否则传递参数true,如果使用 windows默认的橡皮筋缩放,效果如图1所示,会产生一个矩形框,不管是窗口移

Kean专题:拖动一个属性块(JIG拖拽)

原文转载自:http://through-the-interface.typepad.com/through_the_interface/jigs/(该口已无法访问) 可访问转载入口:http://bbs.mjtd.com/thread-75618-1-1.html(转载自明镜通道by雪山飞狐_lzh) 原kean博客已经无法看到,故转载明经通道 雪山飞狐_lzh 老师整理内容     1.kean原文翻译     March 18, 2009 Jigging an AutoCAD block

HTML5 拖拽实现

简介: 最早在网页中引入JavaScript拖放功能是IE4.当时,网页中只有两种对象可以拖放:图像和某些文本.拖放图像时,把鼠标放到图像上,按住鼠标不放就可以拖放它.拖放文本时,要先选中文本,然后可以像拖放图像一样拖放被选中的文本.在IE4中,唯一有效的放置目标是文本框.到了IE5,拖放功能得到拓展,添加了新的事件,而且几乎网页中的任何元素都可以作为放置目标.IE5.5更进一步让网页中的任何元素都可以拖放.HTML5以IE的实例为基础指定了拖放规范.  一.基本释义  1 实现拖拽效果   *

jquery gridster 拖拽功能 中文文档

先上git连接 http://git.oschina.net/alexgaoyh/Draging/blob/master/src/main/webapp/gridster/adding-widgets-dynamically.html 效果截图: 1)动态添加模块(http://gridster.net/demos/adding-widgets-dynamically.html):使用add_widget方法,通过数组创建一个gridster实例,产生的模块自动排列,无需指定相对位置. (2)自

HTML5拖拽——将本地文件拖拽到网页中显示

HTML5标准中的提供的用于文件输入输出(I/O)的对象 File: 代表一个文件对象 FileList: 代表一个文件列表,类数组对象 FileReader 用于从文件中提取内容 FileWrite 用于向文件中写入类容 这些对象需要在 H5的拖拽事件中通过 e.dataTransfer 来访问和获取 完成效果如下: Data URL给了我们一种很巧妙的将图片"嵌入"到HTML中的方法.跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换