您的位置:首页 > 新闻 > 会展 > 网站设计制作一条龙免费_网站收录情况查询_网站查询进入_网站建站系统

网站设计制作一条龙免费_网站收录情况查询_网站查询进入_网站建站系统

2025/1/6 15:58:28 来源:https://blog.csdn.net/tealcwu/article/details/144277387  浏览:    关键词:网站设计制作一条龙免费_网站收录情况查询_网站查询进入_网站建站系统
网站设计制作一条龙免费_网站收录情况查询_网站查询进入_网站建站系统

在这里插入图片描述

本文介绍如何在编辑器里让物体围绕一个点旋转固定角度,比如上图里的Cube是围绕白色圆盘的中心旋转45度的。

目标:

创建一个在 Unity 编辑器中使用的旋转工具,使开发者能够在编辑模式下快速旋转一个物体。

实现思路:

  1. 编辑模式下操作:

    • 使用 ExecuteInEditMode 特性让脚本在编辑模式下执行,而不需要进入播放模式。这对于关卡设计或对象调整非常有用,因为可以实时看到编辑效果。
  2. 核心功能(旋转操作):

    • EditorRotateTool.cs 提供了旋转功能:通过 RotateAround 方法将目标物体围绕某个指定的中心点旋转一定角度。该操作仅在编辑模式下执行,并且可以设置旋转的轴(如绕 Y 轴旋转)。
  3. 自定义 Inspector 界面:

    • EditorRotateToolInspector.cs 用于自定义 EditorRotateTool 脚本的 Inspector 界面。通过重写 OnInspectorGUI(),在 Unity 编辑器面板中提供一个按钮 “旋转物体”,用户点击该按钮时触发旋转操作。
  4. 流程

    • 用户在 Unity 编辑器中将 EditorRotateTool.cs 脚本挂载到一个物体上。
    • 在 Inspector 中设置目标物体、旋转角度和旋转轴。
    • 用户点击 “旋转物体” 按钮时,EditorRotateToolInspector 会调用 EditorRotateTool 中的 RotateAroundTarget 方法,在编辑模式下旋转物体。

实现步骤:

  1. 编写旋转工具脚本(EditorRotateTool.cs

    • 创建一个可以旋转物体的工具,允许设置旋转的目标、角度和轴。
    • 使用 ExecuteInEditMode 使脚本在编辑模式下运行。
  2. 编写自定义 Inspector(EditorRotateToolInspector.cs

    • 为旋转工具脚本创建一个自定义的 Inspector 界面。
    • 增加一个按钮,在编辑器面板中触发旋转操作。
  3. 用户操作:

    • 用户在 Unity 编辑器中设置旋转目标,点击按钮触发旋转。

这个实现的核心思想是通过自定义编辑器扩展提高开发效率,使开发者在不进入播放模式的情况下快速查看物体的旋转效果,尤其适用于关卡设计和场景调整。

代码实现

文件 1: EditorRotateTool.cs

using UnityEngine;[ExecuteInEditMode] // 允许在编辑模式下运行
public class EditorRotateTool : MonoBehaviour
{public Transform target; // 目标物体(中心点)public float angle = 45f; // 旋转角度public Vector3 axis = Vector3.up; // 旋转轴/// <summary>/// 执行旋转/// </summary>public void RotateAroundTarget(){if (target != null){// 仅在编辑模式下执行if (!Application.isPlaying){transform.RotateAround(target.position, axis, angle);Debug.Log("编辑模式下旋转完成!");}}else{Debug.LogWarning("请设置目标物体!");}}
}

这是主脚本,用于定义一个旋转工具:

  1. 关键属性

    • target:目标对象(作为旋转中心点的物体)。
    • angle:旋转角度,默认为 45 度。
    • axis:旋转轴,默认为 Vector3.up(即围绕 Y 轴旋转)。
  2. 核心方法

    • RotateAroundTarget():用于实现目标物体的旋转。
      • 检查是否设置了 target
      • 在编辑模式下(非运行时),调用 transform.RotateAround 以目标位置为中心点、指定旋转轴和角度进行旋转。
      • 通过 Debug.Log 输出提示旋转是否完成或目标未设置。
  3. 使用 ExecuteInEditMode

    • 此脚本允许在编辑模式下执行(无需运行游戏),方便开发者操作。

文件 2: EditorRotateToolInspector.cs

using UnityEngine;
using UnityEditor;[CustomEditor(typeof(EditorRotateTool))]
public class EditorRotateToolInspector : Editor
{public override void OnInspectorGUI(){// 获取脚本引用EditorRotateTool tool = (EditorRotateTool)target;// 显示默认的 Inspector 字段DrawDefaultInspector();// 添加按钮if (GUILayout.Button("旋转物体")){tool.RotateAroundTarget();}}
}

这是一个自定义 Inspector 脚本,用于增强 Unity 编辑器中的用户界面:

  1. 核心功能

    • 扩展了 EditorRotateTool 脚本的 Inspector 面板。
    • 默认显示所有公共字段(target, angle, axis)。
    • 增加了一个按钮 “旋转物体”,当点击按钮时会调用 RotateAroundTarget() 方法,直接在编辑模式下旋转物体。
  2. 实现方式

    • 使用 [CustomEditor] 特性将这个 Inspector 关联到 EditorRotateTool
    • 重写了 OnInspectorGUI() 方法:
      • 调用 DrawDefaultInspector() 保持默认字段显示。
      • 添加按钮,用于触发旋转操作。

如何使用

  1. 挂载脚本

    • EditorRotateTool.cs 挂载到一个 GameObject(游戏对象)上。
  2. 设置参数

    • 在 Inspector 面板中设置:
      • Target:作为旋转中心点的物体。
      • Angle:旋转角度。
      • Axis:旋转轴(如 Vector3.up 表示 Y 轴)。
  3. 旋转操作

    • 在 Unity 编辑器中,脚本会通过 EditorRotateToolInspector 提供一个按钮 “旋转物体”。
    • 点击按钮,即可在编辑模式下让挂载脚本的物体绕指定目标旋转。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com