Unity编辑器下如何获取物体(GameObject)的中心位置

注意仅能在编辑器下才能使用该方法

实现方式依靠UnityEditor.Tools提供的参数,具体实现如下:

  • 获取单个物体的中心坐标
csharp 复制代码
public static Vector3 GetGameObjectCenter(GameObject gameObject)
{
    // 选中物体
    Selection.activeObject = gameObject;

    // 记录当前Scene窗口的Tool Handle状态
    var curPivotMode = Tools.pivotMode;
    // 将Handle转成Center模式
    Tools.pivotMode = PivotMode.Center;
    // 获取Scene的View
    SceneView view = SceneView.lastActiveSceneView;
    // 聚焦并重绘场景
    view.Focus();
    view.Repaint();
    // 保存当前handle的坐标,即为center坐标
    var center = Tools.handlePosition;
    // 复原状态
    Selection.objects = null;
    Tools.pivotMode = curPivotMode;

    return center;
}
  • 获取一组物体的中心坐标
csharp 复制代码
public static Vector3 GetGameObjectsCenter(GameObject[] gameObjects)
{
    // 选中所有物体
    Selection.objects = gameObjects;

    // 记录当前Scene窗口的Tool Handle状态
    var curPivotMode = Tools.pivotMode;
    // 将Handle转成Center模式
    Tools.pivotMode = PivotMode.Center;
    // 获取Scene的View
    SceneView view = SceneView.lastActiveSceneView;
    // 聚焦并重绘场景
    view.Focus();
    view.Repaint();
    // 保存当前handle的坐标,即为center坐标
    var center = Tools.handlePosition;
    // 复原状态
    Selection.objects = null;
    Tools.pivotMode = curPivotMode;

    return center;
}
相关推荐
SmalBox20 小时前
【光照】Unity中的[经验模型]
unity·渲染
萘柰奈21 小时前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
Yasin Chen1 天前
Unity UI坐标说明
ui·unity
应用市场1 天前
无人机姿态控制系统详解与实现
游戏引擎·cocos2d
陈言必行1 天前
Unity 性能优化 之 编辑器创建资源优化( 工作流 | 场景 | 预制体)
unity·编辑器·游戏引擎
1uther1 天前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
CAE虚拟与现实1 天前
VSCode中的下载VSIX是指什么?
ide·vscode·编辑器
死也不注释1 天前
【Unity UGUI 交互组件——Slider(7)】
unity·游戏引擎·交互
CAE虚拟与现实2 天前
VSCode官方汉化包
ide·vscode·编辑器·vscode汉化
CAE虚拟与现实2 天前
VSCode创建Python项目和运行py文件
ide·vscode·编辑器