Gizmos에 Mesh 표시
전제 조건
Unity 3D로 Predab에 Prefab를 끼워 넣으려고 했는데 링크가 끊겨서 Prefab의 빈 Object를 불러올 준비를 했습니다. 이런 일을 했을 때 Gizmos를 미리 표시하지 않으면 어디에 어떤 대상이 나타날지 모릅니다!
해결책
Prefab 마운트에서 Gizmos를 사용자 정의합니다.
메시가 있는 것은 그 메시를 표시하고 그 외에 적당한 기즈모스로 대체한다.
이루어지다 using UnityEngine;
public class PrefabLoader : MonoBehaviour {
public GameObject prefab;
public Color color;
static readonly float alpha = 0.6f;
static readonly Color defaultColor = new Color(1f, 0f, 0f, alpha);
static readonly Vector3 labelOffset = new Vector3(0f, 1f, 0f);
void Start () {
var obj = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject;
obj.transform.SetParent(transform, false);
}
void OnDrawGizmos () {
Gizmos.color = defaultColor;
// colorのAlphaが0じゃないとき上書き
if (!color.a.Equals(0f)) {
Gizmos.color = color;
}
if (prefab != null) {
#if UNITY_EDITOR
UnityEditor.Handles.Label(transform.position + labelOffset, prefab.name);
#endif
// 3Dオブジェクトの場合はMeshを表示する
if (prefab.GetComponent<MeshFilter>() != null) {
Gizmos.DrawMesh(
prefab.GetComponent<MeshFilter>().sharedMesh,
transform.position,
prefab.transform.rotation,
prefab.transform.localScale);
} else {
Gizmos.DrawSphere(transform.position, alpha);
}
}
}
}
GameObject에 스크립트를 추가하고 표시할 prefab을 Inspector로 지정하면 완료됩니다.
색상을 변경하려면 Inspector를 사용하여 색상을 지정할 수 있습니다.
확인
이렇게 돼서
Reference
이 문제에 관하여(Gizmos에 Mesh 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tm8r/items/ce3fbeba727e4e1255ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Prefab 마운트에서 Gizmos를 사용자 정의합니다.
메시가 있는 것은 그 메시를 표시하고 그 외에 적당한 기즈모스로 대체한다.
이루어지다 using UnityEngine;
public class PrefabLoader : MonoBehaviour {
public GameObject prefab;
public Color color;
static readonly float alpha = 0.6f;
static readonly Color defaultColor = new Color(1f, 0f, 0f, alpha);
static readonly Vector3 labelOffset = new Vector3(0f, 1f, 0f);
void Start () {
var obj = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject;
obj.transform.SetParent(transform, false);
}
void OnDrawGizmos () {
Gizmos.color = defaultColor;
// colorのAlphaが0じゃないとき上書き
if (!color.a.Equals(0f)) {
Gizmos.color = color;
}
if (prefab != null) {
#if UNITY_EDITOR
UnityEditor.Handles.Label(transform.position + labelOffset, prefab.name);
#endif
// 3Dオブジェクトの場合はMeshを表示する
if (prefab.GetComponent<MeshFilter>() != null) {
Gizmos.DrawMesh(
prefab.GetComponent<MeshFilter>().sharedMesh,
transform.position,
prefab.transform.rotation,
prefab.transform.localScale);
} else {
Gizmos.DrawSphere(transform.position, alpha);
}
}
}
}
GameObject에 스크립트를 추가하고 표시할 prefab을 Inspector로 지정하면 완료됩니다.
색상을 변경하려면 Inspector를 사용하여 색상을 지정할 수 있습니다.
확인
이렇게 돼서
Reference
이 문제에 관하여(Gizmos에 Mesh 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tm8r/items/ce3fbeba727e4e1255ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
public class PrefabLoader : MonoBehaviour {
public GameObject prefab;
public Color color;
static readonly float alpha = 0.6f;
static readonly Color defaultColor = new Color(1f, 0f, 0f, alpha);
static readonly Vector3 labelOffset = new Vector3(0f, 1f, 0f);
void Start () {
var obj = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject;
obj.transform.SetParent(transform, false);
}
void OnDrawGizmos () {
Gizmos.color = defaultColor;
// colorのAlphaが0じゃないとき上書き
if (!color.a.Equals(0f)) {
Gizmos.color = color;
}
if (prefab != null) {
#if UNITY_EDITOR
UnityEditor.Handles.Label(transform.position + labelOffset, prefab.name);
#endif
// 3Dオブジェクトの場合はMeshを表示する
if (prefab.GetComponent<MeshFilter>() != null) {
Gizmos.DrawMesh(
prefab.GetComponent<MeshFilter>().sharedMesh,
transform.position,
prefab.transform.rotation,
prefab.transform.localScale);
} else {
Gizmos.DrawSphere(transform.position, alpha);
}
}
}
}
이렇게 돼서
Reference
이 문제에 관하여(Gizmos에 Mesh 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tm8r/items/ce3fbeba727e4e1255ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)