将选中的物体进行修改保存到XML或者保存到Assets目录下的某个预制以及自定义快捷键=_=

之前一直想做个copy对象的transform属性,每次都点那个小齿轮真是太麻烦了,于是有了如下:

using UnityEngine;
using System.Collections;
using UnityEditor;


public class ChangeAudioClip : MonoBehavIoUr
{
[MenuItem("Terrain/CustomTool")] //添加一个命令按钮到菜单栏[MenuItem("Terrain/CustomTool _g")]加上‘ _g’为定义一个快捷键
public static void CreatTool()
{
EditorWindow.Getwindow<AudioClip_Tool>(false,"AudioClip_Tool",true).Show(); //执行
}
}


public class AudioClip_Tool : EditorWindow
{
void OnGUI()
{
GUILayout.Space(20);
GUILayout.BeginHorizontal();
if (GUILayout.Button("SelectedChangePosition",GUILayout.Width(230))) //创建一个button?
{
SelectedChangePosition();
}
GUILayout.EndHorizontal();
}


private void SelectedChangePosition()
{
Transform[] trans = Selection.GetTransforms(SelectionMode.DeepAssets); //选中之后返回的模式,API一共有八种,也没看出来有什么区别,这个deepassets是这么介绍的:若选择的是文件夹,则包含文件夹在内的所有资产


if (trans.Length > 2) //因为我想要的功能是单选,再加上物体本身,所以要排除的是二个
return;
copyTrans copy = FindobjectOfType<copyTrans>(); //自己写的一个脚本,用来加载一些预制什么的,因为我没找到或者那个函数不稳定?Resources .FindobjectsOfTypeAll 就是这货,刚开始测试好好的,我这个项目最初检测出2600+,测试了几次就只有20+,只有删除再创建放到Assets下才有效,有时候只有在Resources下才有效=_=,或许是我没有搞清楚吧
Transform tr = null;
for (int i = 0; i < copy.chat.Length; i++) // 这是我自己需要用到的一些,其他的修改也差不多,只要得到了object想干嘛就干嘛了
{
if (copy.chat[i] && copy.chat[i].name == trans[0].name)
{
Debug.Log(copy.chat[i].name);
copy.chat[i].position = trans[0].position;
copy.chat[i].rotation = trans[0].rotation;
copy.chat[i].localScale = trans[0].localScale;
return;
}
}


for (int i = 0; i < copy.record.Length; i++)
{
if (copy.record[i] && copy.record[i].name == trans[0].name)
{
Debug.Log(copy.record[i].name);
copy.record[i].position = trans[0].position;
copy.record[i].rotation = trans[0].rotation;
copy.record[i].localScale = trans[0].localScale;
return;
}
}


for (int i = 0; i < copy.cameraPoint.Length; i++)
{
if (copy.cameraPoint[i] && copy.cameraPoint[i].name == trans[0].name)
{
Debug.Log(copy.cameraPoint[i].name);
copy.cameraPoint[i].position = trans[0].position;
copy.cameraPoint[i].rotation = trans[0].rotation;
copy.cameraPoint[i].localScale = trans[0].localScale;
return;
}
}
}


void OnInspectorUpdate() //在编辑器状态下,只要inspector面板有更改就会调用这个函数,然后必须得写个repaint()才会刷新
{
Repaint();
}
}


using UnityEngine;


public class copyTrans : MonoBehavIoUr
{
public Transform[] chat;
public Transform[] record;


void Start()
{
Transform[] all = Resources.FindobjectsOfTypeAll<Transform>();
Debug.Log(all.Length);
for (int i = 0; i < all.Length; i++)
{
if (all[i].name == "ChatPoint")
{
chat = all[i].GetComponentsInChildren<Transform>();
}
else if (all[i].name == "RecordPoint")
{
record = all[i].GetComponentsInChildren<Transform>();
}
}
}


public void SaveXML()
{
Debug.Log("Data already save at xml.");
}


void OnApplicationQuit()
{
Debug.Log("Object Not Found.");
}
}

一直想在unity里定义个快捷键来操作某些东西,一直找不到,在写这个东西的时候恰巧看到了,引用如下:http://blog.csdn.net/zw514159799/article/details/50775502

精华如下:

为了使超级用户和喜欢使用键盘用户工作的更快捷,我们可以为新的菜单项关联一个快捷键-使用快捷键的组合将自动的启动他们菜单项。
下面是被指定的键(它们也可以组合起来使用):

  • %-CTRL 在Windows / CMD在OSX
  • # -Shift
  • & -Alt
  • LEFT/RIGHT/UP/DOWN-光标键
  • F1…F12
  • HOME,END,PGUP,PDDN

字母键不是key-sequence的一部分,要让字母键被添加到key-sequence中必须在前面加上下划线(例如:_g对应于快捷键”G”)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇