一、设置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 ); //隐藏物体
|
unity3.x写法:
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" );
}
}
} |
以上各种方法谨供大家参考,在选用的时候要根据实际的情况来选用适合的方法来实现物体的隐藏与显现。
相关推荐
Unity3D脚本:隐藏GameObject子物体 Posted on 2013年01月22日 by U3d / Unity3D脚本/插件/被围观 414 次
Unity3D双击按扭隐藏显示物体1
Unity3D脚本:根据子物体找到根物体2
基于Highlighting System插件的鼠标选中物体时,使物体高亮显示。在这个插件的基础上,改动部分没必要的功能,使物体可以高亮显示。直接调用该脚本里的方法就可实现物体高亮显示。
Unity3D脚本:读取同名物体 Posted on 2013年02月18日 by U3d / Unity3D脚本/插件/被围观 235 次 在Unity场景里
unity3d 游戏插件 Mesh Explosion 物体破碎特效资源包
Unity3D脚本:如何操作标签相同的所有物体 Posted on 2013年02月17日 by U3d / Unity3D脚本/插件/被围观 219 次 按照
Unity 3D 观察物体 旋转查看物体 世界坐标与局部坐标旋转转换 旋转物体问题
Unity3D鼠标拾取物体 Posted on 2013年03月26日 by U3d / Unity3D脚本/插件/被围观 352 次 Unity3D鼠标拾取物
unity3d可以把网页内容显示在物体上, 温馨提示:导入unity3d包时候,记得路径不能带中文,也不要放桌面。
Unity3D教程:切换相机使物体成半透明状 Posted on 2013年02月06日 by U3d / Unity3D 基础教程/被围观 369 次 在Un
Unity3D中物体的轮廓显示,此处分为薄边和厚边两种。无入侵式实现。
Unity3D脚本如下:Transform GetTransform(Transform check,string name){foreach (Transfo
Unity3D游戏中物件开启与关闭的方法 Posted on 2013年01月07日 by U3d / Unity3D脚本/插件/被围观 740 次 物件的显示
基于安卓平台,利用unity3d引擎,实现vuforia插件实现3D物体的识别应用
Unity3D脚本:缓慢改变物体颜色 Posted on 2013年02月20日 by U3d / Unity3D脚本/插件/被围观 310 次 物体缓慢的由白
Unity3D教程:用快捷键控制物体的激活状态 Posted on 2013年02月17日 by U3d / Unity3D 软件操作/被围观 238 次 Un
Unity3D 中三维制作规范是指在使用 Unity3D 软件进行三维模型制作时的一些规范和要求,旨在确保模型的质量、性能和可读性。本文档将详细介绍 Unity3D 中三维制作规范的各个方面,包括模型规范、材质贴图规范、模型...
最近有一个需求是要实现物体闪烁的效果,就像地下出现珍宝一样- -,运用还是比较广的,下面的例子只是一个参考,还有很多花式玩法等待大家开发。 思路 这个就比较简单了,就是设一个全局变量控制闪烁的间隔,然后...
unity3d实现透明半透明隐藏效果代码