Unity 泛型方法:显示 MonoBehaviour 并标出大小,获取材质名称
以下是一个泛型方法的示例,可以将一个 MonoBehaviour 显示在屏幕中心,并用一个 2D 框标出它的大小,并返回其材质名称:
using UnityEngine;
public class DisplayMonoBehaviour<T> where T : MonoBehaviour
{
public static string Display(T monoBehaviour)
{
// 获取目标物体的位置和大小
Vector3 position = monoBehaviour.transform.position;
Vector3 size = monoBehaviour.GetComponent<Renderer>().bounds.size;
// 计算屏幕中心的位置
Vector3 screenCenter = new Vector3(Screen.width / 2, Screen.height / 2, 0);
// 计算目标物体在屏幕中心的偏移量
Vector3 offset = screenCenter - Camera.main.WorldToScreenPoint(position);
// 移动目标物体到屏幕中心
monoBehaviour.transform.position += offset;
// 获取目标物体的材质名称
string materialName = monoBehaviour.GetComponent<Renderer>().material.name;
// 在屏幕中心绘制一个 2D 框来标出目标物体的大小
Vector2 rectSize = new Vector2(size.x, size.y);
Rect rect = new Rect(screenCenter - rectSize / 2, rectSize);
GUI.Box(rect, "");
return materialName;
}
}
使用方法示例:
public class ExampleScript : MonoBehaviour
{
void Start()
{
// 创建一个 MonoBehaviour 实例
SomeMonoBehaviour monoBehaviour = new SomeMonoBehaviour();
// 显示并移动到屏幕中心,并获取材质名称
string materialName = DisplayMonoBehaviour<SomeMonoBehaviour>.Display(monoBehaviour);
Debug.Log("材质名称:" + materialName);
}
}
public class SomeMonoBehaviour : MonoBehaviour
{
// SomeMonoBehaviour 的实现代码
}
请注意,示例代码中的SomeMonoBehaviour是一个自定义的 MonoBehaviour 类,您需要根据您的实际需求替换它。
原文地址: https://www.cveoy.top/t/topic/o725 著作权归作者所有。请勿转载和采集!