查看: 9975|回复: 0
打印 上一主题 下一主题

Unity插件学习(一)批量更改场景中的Tag或Layer

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-29 11:22:44 |只看该作者 |倒序浏览
时间过得很快,从开始接触unity3d到现在已经有一年半了,非常感谢龚老师带我们学习Unity,不然,我现在会是在干什么呢,PHP又或是ASP.NET? 出来工作这么久了,感觉自己进步很慢,可能是我天生比较笨,也有可能是学习方法不对。我更希望是后者,嘻嘻~~这样的话,我是否应该多总结,总结自己每天学到了什么,在此就借用空间日志吧。
    这段时间有关注Unity3D插件方面的应用,写了个小插件批量更改Project或Hierarchy里的Tag或Layer,废话不多说,直接贴代码:

//-----------------------------------------------------------------

// ChangeTagOrLayer  (7-24-2011)

//  Created by LKP

// QQ: 121063550

//-----------------------------------------------------------------
using UnityEngine;

using System.Collections;

using UnityEditor;
/// <summary>

/// 批量更改场景中的Tag或Layer

/// 使用方法: 在Assets文件夹下创建Editor文件夹,将复制或拷贝该代码保存成ChangeTagOrLayer.cs放入Editor文件夹,

/// 在Hierarchy或Project中选择多个物体后,选择菜单上的Custom -> Change Tag Of Selected Objects,

/// 选择要更改的Tag 或 Layer,点击Set Tag 或 Set Layer,批量更改Tag/Layer成功

/// </summary>

public class ChangeTagOrLayer : EditorWindow

{

    /// <summary>

    /// 存储的Tag值

    /// </summary>

    private static string tagStr = string.Empty;
    /// <summary>

    /// 存储Layer值

    /// </summary>

    private static int layInt = 0;
    /// <summary>

    /// 创建、显示窗体

    /// </summary>

    [@MenuItem("Custom/ChangeTagOrLayer")]

    private static void Init()

    {

        ChangeTagOrLayer window = (ChangeTagOrLayer)GetWindow(typeof(ChangeTagOrLayer), ***e, "ChangeTagOrLayer");

        window.Show();

    }
    /// <summary>

    /// 显示窗体里面的内容

    /// </summary>

    private void OnGUI()

    {

        tagStr = EditorGUILayout.TagField("Tag for Objects:", tagStr);

        if (GUILayout.Button("Set Tag"))

            SetTags();
        layInt = EditorGUILayout.LayerField("Layer for Objects:", layInt);

        if (GUILayout.Button("Set Layer"))

            SetLayers();

    }
    /// <summary>

    /// 设置所选GameObject的Tag

    /// </summary>

    private static void SetTags()

    {

        foreach (GameObject go in Selection.gameObjects)

            go.tag = tagStr;

    }
    /// <summary>

    /// 设置所选GameObject的Layer

    /// </summary>

    private static void SetLayers()

    {

        foreach (GameObject go in Selection.gameObjects)

            go.layer = layInt;

    }

}









分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-27 22:34 , Processed in 0.110846 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部