Unity3D 一键更换场景物体
来源:互联网 发布:颂党恩 知党史 征文 编辑:程序博客网 时间:2024/05/08 23:42
作为一名高贵的程序猿,通过代码让电脑代替自己的工作是我们存在的意义。
不管要更换的是什么东西,我们都可以用一个prefab把它们替换掉。
不管要更换的是什么东西,我们都可以用一个prefab把它们替换掉。
都在代码里,走一个~
using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;/// <summary>/// 改变Prefab/// 注:通过名字匹配搜索被替换目标/// (被选中物体的所有子物体.name包含newPrefab.name则替换)/// </summary>public class ChangePrefab : EditorWindow { [MenuItem("DuanTools/换Prefab")] public static void Open() { EditorWindow.GetWindow(typeof(ChangePrefab)); } public GameObject newPrefab; static GameObject tonewPrefab; void OnGUI() { newPrefab = (GameObject)EditorGUILayout.ObjectField(newPrefab, typeof(GameObject),true, GUILayout.MinWidth(100f)); tonewPrefab = newPrefab; if (isChange) { GUILayout.Button("正在变..."); } else { if (GUILayout.Button("变变变!")) Change(); } } static bool isChange = false; public static void Change() { if (tonewPrefab == null) return; isChange = true; List<GameObject> destroy = new List<GameObject>(); Object[] labels = Selection.GetFiltered(typeof(GameObject), SelectionMode.Deep); foreach (Object item in labels) { GameObject tempGO = (GameObject)item; // (GameObject)item; //只要搜到的物体包含新Prefab的名字,就会被替换 if (tempGO.name.Contains(tonewPrefab.name)) { GameObject newGO = (GameObject)Instantiate(tonewPrefab); newGO.transform.SetParent(tempGO.transform.parent); newGO.name = tempGO.name; newGO.transform.localPosition = tempGO.transform.localPosition; newGO.transform.localRotation = tempGO.transform.localRotation; newGO.transform.localScale = tempGO.transform.localScale; destroy.Add(tempGO); } } foreach (GameObject item in destroy) { DestroyImmediate(item.gameObject); } isChange = false; }}
下面是使用方法:
首先打开刚才制作的编辑器窗口,选择一个要替换成的Prefab。
然后在游戏场景内寻则要被替换物体的最父级。
点击“变变变”,所有包含新prefab名字的场景内物体都会被替换掉了。
0 0
- Unity3D 一键更换场景物体
- 【Unity3D自学记录】批量更换预设物体。
- Unity3d 场景中物体渐隐效果实现
- Unity3D场景搭建1:游戏物体
- Unity3D-切换场景,物体变暗解决方法
- unity3d 随机函数 场景中物体移动和旋转
- unity3d 切换场景不销毁对象池中的物体方案
- 【Unity3d开发基础】场景中物体的变换
- unity3d点击屏幕判断是否击中场景中物体
- 【Unity3D】同场景物体传值与Vector
- Unity3D中2DUI跟随场景中3D物体
- 【unity3d】2D场景下的物体移动
- Unity3D基础学习 加载场景时隐藏物体,点击显示时显示物体
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
- 一键更换hosts
- unity3d在android的场景中选择一个物体让他旋转平移
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- Unity3D导入的FBX场景模型设置物体之间的碰撞
- 【追求进步】树的子结构
- extern字符串常量,宏定义字符串常量,怎么选?
- jquery键盘按下和松下事件
- 一分钟了解互联网数据挖掘流程
- 也谈BIO | NIO | AIO (Java版)
- Unity3D 一键更换场景物体
- Alluxio源码分析定位策略:指定主机策略SpecificHostPolicy
- items 排序 0
- grunt的一些注意事项
- 【EJB学习笔记】——有状态的会话Bean和无状态的会话Bean
- Android Volley完全解析
- HashMap的工作原理
- 数据挖掘领域十大经典算法
- mysql 整理