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

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方法来隐藏和显示对象的更多相关文章

  1. 【NX二次开发】隐藏、显示对象UF_OBJ_set_blank_status

    隐藏.显示对象用UF_OBJ_set_blank_status() 查看对象显示情况用UF_OBJ_ask_display_properties() 效果: 源码: #include "Te ...

  2. Javascript与jQuery方法的隐藏与显示

    如题,代码奉上. <html> <head> <title>denotoggle</title> <style> #box { width: ...

  3. wicket基础应用(3)——wicket控件的隐藏和显示

    在一个项目,页面经常要显示和隐藏一些控件,用wicket来控制显示和隐藏控件相当的方便. 1.最简单的隐藏和显示方法: wicket的控件大部分都有setVisible(...)方法,用这个方法就可以 ...

  4. jQuery_效果(隐藏和显示)

    一.jQuery hide() 显示和 show()隐藏 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: <script type=" ...

  5. jQuery控制元素隐藏和显示

    1.jQuery隐藏和显示效果 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").click(functio ...

  6. jQuery 效果 – 隐藏和显示

    在 jQuery 中可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素,以及使用 toggle() 方法能够切换 hide() 和 show() 方法. 隐藏.显示.切换,滑动 ...

  7. jQuery效果--隐藏和显示

    jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").click( ...

  8. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  9. jquery控制元素的隐藏和显示的几种方法

    使用jquery控制div的显示与隐藏,一句话就能搞定,例如: 方法一 显示: $("#id").show()表示为display:block, 隐藏: $("#id&q ...

随机推荐

  1. hdu 1029(hash)

    传送门:Ignatius and the Princess IV 题意:给n个数,找出出现次数大于等于(n+1)/2的那个数. 分析:大水题,排个序输出中间那个即可,这里随便写个HASHMAP找出次数 ...

  2. ural 1837. Isenbaev's Number bfs

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1837 描述: Isenbaev是国外的一个大牛. 现在有许多人要参加ACM ICPC. ...

  3. UVA796- Critical Links(无向图中的桥梁)

    题目链接 题意: 给出一个无向图,按顺序输出桥 思路:求出全部的桥,然后按顺序输出就可以 代码: #include <iostream> #include <cstdio> # ...

  4. A Game of Thrones(15) - Sansa

    Eddard Stark had left before dawn, Septa Mordane informed Sansa as they broke their fast. “The king ...

  5. 解决com.ibatis.sqlmap.client.SqlMapException: There is no statement named in this SqlMap

    com.ibatis.sqlmap.client.SqlMapException: There is no statement named in this SqlMap. 可能存在3种情况: 1.在x ...

  6. 【C语言疯狂讲义】(八)C语言一维数组

    1.数组的基本概念: 同样类型    若干个     有序 由若干个同样类型的数据组成的有序的集合 有序:存储地址连续 下标连续 数组名:用来存放数组首地址的变量 数组元素:构成数组的每个数据 数组的 ...

  7. C++ Primer 学习笔记_79_模板与泛型编程 --模板编译模型

    模板与泛型编程 --模板编译模型 引言: 当编译器看到模板定义的时候,它不马上产生代码.仅仅有在用到模板时,假设调用了函数模板或定义了模板的对象的时候,编译器才产生特定类型的模板实例. 一般而言,当调 ...

  8. iOS ,呼叫捕获抛出勉未知方法的障碍

    iOS 捕获未知方法的调用,避勉抛出异常 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

  9. 前端控件之Jquery datetimepicker的使用总结

    效果图 在介绍jquery datetimepicker的使用方法前,我们先来看一下它的实现效果图,这样以便让你更快地了解它是否是你所需要的. 下面我截了四张常用的效果图(截取自http://xdso ...

  10. 用xml建立仓库的逻辑层的操作

    package com.repositoryclient.xml; import java.io.FileNotFoundException; import java.io.FileOutputStr ...