如何创建仅在Scene视图可见、Game视图不可见的GameObject?
实现运行时Scene视图可见、Game视图不可见的出生点/寻路标记
方法1:用Gizmos绘制自定义标记(最推荐)
给每个出生点/寻路目标GameObject挂个简单脚本,就能在Scene视图显示自定义标记,Game视图完全看不到:
using UnityEngine; public class SpawnMarker : MonoBehaviour { public Sprite customIcon; // 可在Inspector拖入自定义图标 public float markerSize = 1f; public Color markerColor = Color.green; void OnDrawGizmos() { Gizmos.color = markerColor; if (customIcon != null) { Gizmos.DrawIcon(transform.position, customIcon.name, true, markerColor); } else { // 没自定义图标就画个绿色立方体 Gizmos.DrawCube(transform.position, Vector3.one * markerSize); } } }
- 不管游戏跑没跑,Scene视图都会显示标记;Game视图默认不渲染Gizmos,所以完全看不到。
- 好处:不影响任何游戏逻辑,标记样式随便改,还能在编辑模式和运行时都看到。
方法2:用Layer控制相机渲染
不想写脚本的话,用Layer过滤也能搞定:
- 新建一个Layer,比如叫
SpawnPoints - 把所有标记对象的Layer改成这个
- 找到主相机,在Camera组件的
Culling Mask里取消勾选SpawnPoints层 - 确保Scene视图的Layer过滤没隐藏这个层(右上角Layers下拉菜单勾上
SpawnPoints) - 注意:如果标记对象本身带MeshRenderer这类渲染组件,主相机会直接忽略它;要是没渲染组件,其实和方法1效果差不多。
方法3:直接禁用渲染组件
如果标记对象有MeshRenderer之类的东西,直接关掉就行:
- 选中对象,在Inspector里找到渲染组件(比如MeshRenderer),取消勾选启用
- Game视图不会渲染它,但Scene视图还是会显示对象的变换控件和默认Gizmos
- 缺点:想要自定义标记样式的话,还是得配合方法1的脚本。
内容的提问来源于stack exchange,提问作者Matthew Dryden
相关产品推荐
相关产品推荐

