`

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);//隐藏物体

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子物体1

    "Unity3D脚本隐藏GameObject子物体1"这个主题探讨了如何通过编程的方式实现这一功能。这篇文章可能是2013年发布的一篇关于Unity3D脚本技巧的博客,受到了414次的关注。 首先,让我们深入理解Unity3D中隐藏...

    Unity3D双击按扭隐藏显示物体1

    Unity3D 双击按钮隐藏显示物体详解 在 Unity3D 游戏引擎中,对于物体的隐藏和显示是非常常见的操作。今天,我们将讲解如何使用 Unity3D 脚本来实现双击按钮隐藏显示物体的功能。 知识点1:Unity3D 脚本的基本结构 ...

    Unity3D脚本:如何操作标签相同的所有物体1

    在Unity3D游戏开发中,使用脚本来操作游戏对象(GameObject)是十分常见的任务,特别是当需要对一组具有相同特征的物体进行集体操作时。在这个场景中,"标签"(Tag)是一个非常实用的工具,它允许我们为游戏对象定义...

    Unity3D游戏中物件开启与关闭的方法2

    在Unity3D游戏开发中,控制游戏对象的开启与关闭是一项基本操作,它涉及到对象的可见性、激活状态以及性能优化。本篇文章将探讨一种简单的方法,即通过使用Unity3D脚本来实现游戏对象的显示与隐藏。 首先,我们要...

    Unity3D脚本:隐藏属性脚本1

    对于Unity3D中的GUI元素,例如GUITexture和GUIText,隐藏的逻辑与三维物体类似,只是需要操作不同的属性。例如,若要隐藏GUITexture,我们可以这样做: ```csharp target.guiTexture.enabled = false; ``` 而对于...

    Unity3D教程:用快捷键控制物体的激活状态1

    在Unity3D游戏开发中,有时我们需要快速地切换物体的激活状态,特别是在调试阶段,以隐藏或显示某些游戏对象。本教程将介绍如何通过编写自定义脚本来实现使用快捷键来控制物体及其子物体的激活状态,从而提高工作...

    Unity3d 面试题 总结

    渲染管道是 Unity3d 中的一系列必要操作,以便在显示器上显示出图像。渲染管道中的主要步骤包括本地坐标、视图坐标、背面裁剪、光照、裁剪、投影、视图变换、光栅化等。 二、内存优化 内存优化是 Unity3d 中非常...

    Unity3D如何操作标签相同的所有物体2

    在Unity3D游戏开发中,有时我们需要对场景中具有相同标签(Tag)的多个游戏对象进行统一的操作,例如批量隐藏或显示。这个场景通常出现在需要批量控制同类游戏对象的行为时,比如控制所有敌人同时移动、所有道具同时...

    Unity3D实现物体闪烁效果

    在Unity3D游戏引擎中,实现物体闪烁效果可以用于各种场景,例如模拟霓虹灯、跑马灯或LED灯光效果,这些效果能增加游戏的视觉吸引力。本篇将详细介绍如何在Unity3D中创建物体闪烁效果,以及相关的核心概念和技术。 ...

    Unity3d面试题总结

    在Unity3d中,`Transform.Rotate()`用于物体自身的旋转,而`Transform.RotateAround()`则用于物体围绕特定点旋转。这些函数是实现游戏内物体动态效果的基础。 #### 数据保存与读取 Unity3d内置的`PlayerPrefs`类...

    Unity3D设计基础-组件操作.pptx

    在Unity3D的设计过程中,理解并熟练掌握这些组件操作是至关重要的。这不仅可以帮助创建出更丰富的游戏场景,还能提高开发效率,确保游戏性能。在实际项目中,开发者通常需要频繁地调整组件参数以达到理想的游戏体验...

    unity3D 新手引导遮罩,支持圆形和矩形框

    在Unity3D游戏开发中,新手引导是一种常用的设计手法,旨在帮助玩家更好地理解和熟悉游戏机制。本教程将探讨如何在Unity3D中实现一个新手引导系统,特别关注于使用遮罩技术来创建圆形和矩形框的引导效果。遮罩功能...

    unity3d面试总结

    Unity3D 是一个功能强大且广泛应用于游戏开发的游戏引擎,本文将对 Unity3D 面试中的常见问题进行总结,从数据结构和算法到图形学,涵盖 Unity3D 的各个方面。 一、渲染管道 渲染管道是指在显示器上为了显示出图像...

    unity3d最全面试题

    #### 五、Unity3D中的碰撞器和触发器的区别 **碰撞器(Collider)**:是物理引擎中用于检测碰撞的基本组件。 - **碰撞器**:用于实现真实的物理碰撞效果。 - **触发器(Trigger)**:用于检测进入、离开或停留在...

    Unity3d面试题总结.pdf

    Unity3d面试题总结 以下是根据提供的文件信息生成的知识点: 一、渲染管道 渲染管道是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标...

    Runtime Transform Gizmos (2).zip

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作各种类型的游戏、虚拟现实(VR)和增强现实(AR)应用。在Unity中,Transform组件是每个游戏对象的基础,它包含了对象的位置、旋转和缩放信息。然而,在Unity的编辑...

    unity shader graph 用物体任意方向裁切物体

    总的来说,这个技术可以帮助你创造出更加独特和动态的视觉效果,比如动态切割、隐藏或显示物体的部分,或者创建类似激光切割的动画效果。通过灵活运用Shader Graph和C#脚本,开发者可以实现各种创新的3D视觉效果。

    unity Cross Section 模型剖切插件

    这在Unity中可以通过编程实现,通常涉及计算物体与切割平面的交集,然后修改受影响的像素以显示切面效果。 3. **Cross Section Shader**: 这是插件的核心组件,是一个自定义的着色器程序,用于处理模型被切割后的...

Global site tag (gtag.js) - Google Analytics