Unity3D方法来隐藏和显示对象
Unity3D作
在使用unity3d开发游戏的过程中。我们经常会遇到须要隐藏或者显示的操作,针对这一点,以下做了一些总结。
一、设置Renderer状态
在游戏的开发中,全部可以被渲染的物体都包括有一个Renderer组件。使用它可以将物体渲染到屏幕上,那么假设禁用了这一组件的话,自然也就实现了物体的隐藏。
以下就是实现这一功能的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using
UnityEngine; using
System.Collections; public
class test : MonoBehaviour { public
Transform target; void
Start(){ } void
OnGUI(){ //renderer
control if (GUILayout.Button( "display" )){ MeshRenderer[]
marr = target.GetComponentsInChildren<MeshRenderer>( true ); foreach(MeshRenderer
m in
marr){ m.enabled
= true ; } } if (GUILayout.Button( "hide" )){ MeshRenderer[]
marr = target.GetComponentsInChildren<MeshRenderer>( true ); foreach(MeshRenderer
m in
marr){ m.enabled
= false ; } } } } |
在这里我做了一个遍历,由于有的物体可能会有多个面片这样的情况下就须要把物体的所有面片上的MeshRenderer所有禁用掉。
可是也可能会有一些较为复杂的渲染可能会有Trail Renderer,Line Renderer,Skinned Mesh Renderer,Mesh Renderer等,那就找到它,禁用/激活它来实现隐藏或显示。
二、设置Active
unity4.x写法:
1
2
|
gameObject.SetActive( true ); //显示物体 gameObject.SetActive( false ); //隐藏物体 |
1
2
|
gameObject.SetActiveRecursively( true );显示物体 gameObject.SetActiveRecursively( false );隐藏物体 |
unity4.x会保持当前物体子物体全部的状态,unity3.x则是假设设置active为true。全部子物体全部变为true。
这也是unity升级后改进的一点。
三、设置Layer
如果现有Layer为:
Default = 0,TransparentFX = 1,Ignore Raycase = 2,Water = 4,MyLayer = 8.
设置相机Camera的Culling Mask为:Default+TransparentFX+Ignore Raycase+Water.
那么当设置物体的Layer为MyLayer时候。物体的Layer层在当前相机被忽略,也就相当于隐藏。
详细代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
using
UnityEngine; using
System.Collections; public
class test : MonoBehaviour { void
OnGUI () { if (GUILayout.Button( "Display" )){ gameObject.layer
= LayerMask.NameToLayer( "Default" ); } if (GUILayout.Button( "Hide" )){ gameObject.layer
= LayerMask.NameToLayer( "MyLayer" ); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架