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;
}
相关推荐
dzj20215 小时前
Unity中使用LLMUnity遇到的问题(三)——如何配置和使用知识库
unity·llmunity·知识库大模型
Clank的游戏栈6 小时前
Unity自动化美术资源校验工具(模型/材质规范检测)技术详解
unity·自动化·材质
Sator113 小时前
Unity烘焙光打包后光照丢失问题
unity·光照贴图
Leon Cheng15 小时前
Vue3 + Monaco Editor 实现智能变量编辑器:隐藏花括号的魔法
编辑器
Howrun77716 小时前
虚幻引擎_核心框架
游戏引擎·虚幻
ONLYOFFICE20 小时前
ONLYOFFICE 桌面编辑器正式成为 ShaniOS 默认办公套件
linux·编辑器·github·onlyoffice
zhyongrui20 小时前
SnipTrip:贴纸画布编辑器与“光晕动效”的交互细节
编辑器·交互
GLDbalala21 小时前
Unity 实现一个简单的构建机
unity·游戏引擎
山峰哥21 小时前
SQL调优实战:从索引到执行计划的深度优化指南
大数据·开发语言·数据库·sql·编辑器·深度优先
JIes__2 天前
Unity(二)——Resources资源动态加载
unity·游戏引擎