版本:Unity 6 (6000.0)
语言English
  • C#

HandleUtility.placeObjectCustomPasses

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每一项修改建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

订阅此事件以处理场景视图中的对象放置。

当从层次结构和项目视图拖放对象时,PlaceObject会调用此委托。

using UnityEditor;
using UnityEngine;

static class PlaceObjectExample { static readonly Plane s_GroundPlane = new Plane(Vector3.up, Vector3.zero);

[InitializeOnLoadMethod] static void InitPlaceObjectHandler() { HandleUtility.placeObjectCustomPasses += PlaneRaycast; }

// In this example, we register a plane at the scene origin to test for object placement. static bool PlaneRaycast(Vector2 mousePosition, out Vector3 position, out Vector3 normal) { Ray worldRay = HandleUtility.GUIPointToWorldRay(mousePosition); float distance;

if (s_GroundPlane.Raycast(worldRay, out distance)) { position = worldRay.GetPoint(distance); normal = s_GroundPlane.normal; return true; }

position = Vector3.zero; normal = Vector3.up; return false; } }