Unity3d根据命名快速捕获场景物体轴心点

using UnityEngine;

using System.Collections;

using UnityEditor;

/// <summary>

/// 根据命名快速捕获场景物体轴心点

/// </summary>

public class QuickGetPivot : EditorWindow

{

/// <summary>

/// 定义变量

/// </summary>

private string ObjectNameString = "";

private GameObject MyGameObject;                 //存储场景gameObject

private int[] IntArray = new int[] { 0, 1, 2, 3, 4 };

//顶部特效

private int HeadInt = 0;

private int BottomFootstepsInt = 0;

private int HipChestInt = 0;

private int HandFootInt = 0;

private int WeaponInt = 0;

private int NormalSpecialInt = 0;

private string[] Head_String = new string[] { "Choose A Effect", "Head_C_EffectPoint", "Head_T_EffectPoint" };

private string[] BottomFootsteps_String = new string[] { "Choose A Effect", "Bottom_EffectPoint", "Footsteps_EffectPoint" };

private string[] HipChest_String = new string[] { "Choose A Effect", "Hip_EffectPoint", "Chest_EffectPoint" };

private string[] HandFoot_String = new string[] { "Choose A Effect", "Hand_L_EffectPoint", "Hand_R_EffectPoint", "Foot_L_EffectPoint", "Foot_R_EffectPoint" };

private string[] Weapon_String = new string[] { "Choose A Effect", "Weapon01_EffectPoint", "Weapon02_EffectPoint", "Weapon03_EffectPoint" };

private string[] NormalSpecial_String = new string[] { "Choose A Effect", "Normal_HurtPoint", "Special_HurtPoint" };

/// <summary>Im

/// 创建、显示窗体

/// </summary>

[@MenuItem("Custom/Effect/QuickGetPivot")]

private static void Init()

{

QuickGetPivot window = (QuickGetPivot)GetWindow(typeof(QuickGetPivot), true, "QuickGetPivot");

window.Show();

}

/// <summary>

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

/// </summary>

private void OnGUI()

{

//EffectPopup

HeadInt = EditorGUILayout.IntPopup("顶部特效", HeadInt, Head_String, IntArray);

BottomFootstepsInt = EditorGUILayout.IntPopup("底部特效", BottomFootstepsInt, BottomFootsteps_String, IntArray);

HipChestInt = EditorGUILayout.IntPopup("骨骼特效", HipChestInt, HipChest_String, IntArray);

HandFootInt = EditorGUILayout.IntPopup("手脚特效", HandFootInt , HandFoot_String, IntArray);

WeaponInt = EditorGUILayout.IntPopup("武器特效", WeaponInt , Weapon_String, IntArray);

NormalSpecialInt = EditorGUILayout.IntPopup("受击特效", NormalSpecialInt, NormalSpecial_String, IntArray);

if (GUILayout.Button("Get Object Pivot"))

{

GetSceneObjectPivot();

}

}

/// <summary>

/// 在场景中获取物轴心点

/// </summary>

///

private void GetSceneObjectPivot()

{

//控制台输出ObjectNameString

switch(HeadInt)

{

case 1:

ObjectNameString = "Head_C_EffectPoint";

break;

case 2:

ObjectNameString = "Head_T_EffectPoint";

break;

}

switch(BottomFootstepsInt)

{

case 1:

ObjectNameString = "Bottom_EffectPoint";

break;

case 2:

ObjectNameString = "Footsteps_EffectPoint";

break;

}

switch(HipChestInt)

{

case 1:

ObjectNameString = "Hip_EffectPoint";

break;

case 2:

ObjectNameString = "Chest_EffectPoint";

break;

}

switch(HandFootInt)

{

case 1:

ObjectNameString = "Hand_L_EffectPoint";

break;

case 2:

ObjectNameString = "Hand_R_EffectPoint";

break;

case 3:

ObjectNameString = "Foot_L_EffectPoint";

break;

case 4:

ObjectNameString = "Foot_R_EffectPoint";

break;

}

switch(WeaponInt)

{

case 1:

ObjectNameString = "Weapon01_EffectPoint";

break;

case 2:

ObjectNameString = "Weapon02_EffectPoint";

break;

case 3:

ObjectNameString = "Weapon03_EffectPoint";

break;

}

switch(NormalSpecialInt)

{

case 1:

ObjectNameString = "Normal_HurtPoint";

break;

case 2:

ObjectNameString = "Special_HurtPoint";

break;

}

if("" != ObjectNameString)

{

MyGameObject = GameObject.Find(ObjectNameString);

if(null != MyGameObject)

{

Selection.activeTransform = MyGameObject.transform;

}

else

{

Debug.LogWarning("No Such Object In Scene!");

Selection.activeTransform = null;

}

HeadInt = 0;

BottomFootstepsInt = 0;

HipChestInt = 0;

HandFootInt = 0;

WeaponInt = 0;

NormalSpecialInt = 0;

ObjectNameString = "";

Debug.Log (ObjectNameString);

}

else

{

Debug.LogWarning("Choose A Effect First!");

}

}

}

时间: 2024-07-30 21:06:44

Unity3d根据命名快速捕获场景物体轴心点的相关文章

Unity3D之空间转换学习笔记(一):场景物体变换

该系列笔记基于Unity3D 5.x的版本学习,部分API使用和4.x不一致. 目前在Unity3D中,除了新的UGUI部分控件外,所有的物体(GameObject)都必带有Transform组件,而Transform组件主要是控制物体在3D空间中的位置.旋转以及缩放. 学习和掌握物体的变换是Unity3D开发者必备的基础知识. 基础变换 最基础的变换就是通过脚本直接对物体的位置旋转缩放等进行变换. 匀速移动 我们下面实现一个匀速移动物体的效果,我们在场景中添加一个Cube物体,把下面的脚本绑定

Unity3D制作3D虚拟漫游场景(二)

传送门: Unity3D制作3D虚拟漫游场景(一) -------------------------------------------------------------------------- 昨天已经完成了场景的基本搭建,今天先简单的实现城市漫游功能,具体细节之后再进行添加 1.导入人物 在Assets文件夹下,新建一个文件夹,用于存放预制体,命名为Prefabs 打开昨天导入进去的SimplePeople资源包,打开其中的示例场景,然后我们可以进去挑选人物啦~ 博主在这里选了一个画风

Unity3D学习笔记之八为场景添加细节(一)

这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 我花了30分钟做了一个中等大小的迷宫场景,不知道大家自己发挥,做的场景大小如何. 在完成场景之后,我们看到Hierarchy视图里面的东西已经满了,所以我们先来整理一下Hierarchy视图.创建一个空的游戏物体命名为Environment. 然后来到Hierarchy视图,先讲First Person Controller找到,挪到最上方,然后选中第一个物体,按住

Unity3D学习笔记九为场景添加细节(二)

上节为场景中添加了第一块带有碰撞器的石头,本节我们来利用Prefab,将场景细节都添加进去,并且做的更完善. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 继续来到那块已经成形的石头--Boulder旁边,我们可以制作很多石头的Prefab,这样对于丰富我们巨大的场景很有利,我们先来创建第一个石头的Prefab按下Control+D复制一块石头,按住坐标轴拖动出来,按下R调整到缩放工具,按住中心的白色立方体缩小

3Dmax批量展开场景物体的第二套UV

游戏引擎中需要烘培的物体都需要两套UV. 第一套用来显示贴图的,也就是由我们美术设计师对它进行绘制纹理的,为了节省时间和分辨率最大化显示,一般都会有UV重叠. 第二套是用来烘培光照贴图的,所以不能重叠,并且需要在UV框内(0,1).比如一个正方体接受左上方的黄色主光和右下方蓝色辅助光的照射(蓝色辅助光强度弱一些),那么它的顶部会是最亮的偏黄的,左边的面次之,右边的面会暗些偏蓝.如果UV重叠在一起了,那烘培在这张光照贴图上的颜色无法确定这一块的颜色和明度是怎样的,也就不能正确的展示到屏幕上. 但由

【Unity3d】3d网页游戏场景打包与加载

http://www.cnblogs.com/dosomething/archive/2012/04/07/2436353.html 3d游戏中  一个场景往往比较大  如果游戏的进行需要下载一个10M甚至更大的场景时  加载所用的时间会导致很大部分玩家的流失 我们知道unity3d中的内置地形是使用一张高度图  加载场景时  首先加载地形并显示  再去加载场景中的部件(比如树.房子等)  将会很有必要 在加载场景中的部件时  可以根据玩家当前所在的位置  由近到远的去加载 场景中的每个部件实际

Unity3D制作3D虚拟漫游场景(一)

开始前先说一些题外话,本来这个工程是已经完成了超过一半了,然而由于手残重装了系统不小心删除了,现在只好再做一遍了.顺便写一下博供今后写代码参考. 这是一款使用unity3D开发的虚拟城市漫游游戏,实际上博主是非常喜欢这类游戏的,在城市里面自由地去浪是多么随意的一件事(雾). 最近VR和AR莫名火起来了,然而穷到吃土,入手了Google cardboard,店家顺便附赠了蓝牙游戏遥控器,这款游戏我会在完成之后移植到VR上面进行测试. 博主家在新乡,是的没错,前几天发洪水能划船的新乡,耽误了一些时间

学习笔记:极客学院-2. Unity3D 基础操作-Scene与场景漫游

QWERT切换场景功能 Q:Scene观察视角移动 W:物体的移动 E:物体的旋转 R:物体的缩放 T: 移动旋转缩放时,按住ctrl可以定量,定量的设置在Edit-snapeSetting设置. privot:坐标基点为自身的中心 center:多选时,坐标基点为多个物体的中心 local:坐标的方向以自身为参照(xyz旋转后不一定是正的) global:坐标的方向以世界为参照 Textured WireFrame 物体边框 Textured Wire显示物体的贴图轮廓 Render Path

Unity3D游戏开发之使用场景Ⅰ:建立类型映射

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多Unity3D资源.Unity3D培训视频.Unity3D教程.Unity3D常见问题.Unity3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 总的来看,Unity的使用场景主要有以下几个: 建立类型映射 用于单例模式 用于依赖注入 接下来,将逐一介绍各使用场景. 在创建对象时,毫无疑问,类型映射是我们无法回避的一个问题,同时也是一系列工厂模式的根本出发点.类型映射,