unity批量获取物体组件修改值,拓展子物体查询

using UnityEngine;
using System.Collections;

public class Game : MonoBehaviour {
    // Use this for initialization
    void Start () {
        FindMaterials(this.transform);

    }
    // 根据 物体名称 获取 物体下的任何地方的子物体
    void FindChild(Transform go,string name,ref Transform tr)
    {

        if(go.name.Equals(name))
        {
            tr = go.transform;
            return;
        }
        if(go.childCount>0)
        {
            for(int i=0;i<go.childCount;i++)
            {
                if(go.GetChild(i).childCount>0)
                {
                    FindChild(go.GetChild(i), name, ref tr);
                }
                if(go.GetChild(i).name.Equals(name))
                {
                    tr = go.GetChild(i).transform;
                }
            }
        }
    }   //批量修改 但是只是引用 运行时起作用
    void FindMaterials(Transform go)
    {
        MeshRenderer temp;
        if(go!=null&& go.childCount>0)
        {
            for(int i =0 ;i<go.childCount;i++)
            {
                //temps 第一级子物体
                Transform temps = go.GetChild(i);
                if (temps.childCount > 0)
                    FindMaterials(temps);
                //获取这一级子物体的 Material 更改
                temp = temps.GetComponent<MeshRenderer>();
                if (temp == null)
                {
                    continue;
                }else
                {
                    Shader s = Shader.Find("Custom/Mask");
                    if (temp.material.shader !=s)
                        temp.material.shader = s;
                }
            }
        }
    }
}
时间: 2024-08-07 12:03:32

unity批量获取物体组件修改值,拓展子物体查询的相关文章

vuex非父子组件间改值

最近在用vue写单页面项目嘛,然后就有遇到这问题啦,看了很多参考,要么繁琐的一塌糊涂,要么就是传值并不是改值,下面我述说下方法,最清晰的简单demo 父子间用props 非父子间用vuex store(store/index.js) state: { x:66 }, mutations:{ add:function(state,x){//这边的x来自于a.vue state.x=1+state.x; } }......... a.vue 先引用过来store(import { store } f

如何 正确 删除 子物体

这几天做项目的时候发现 自己删除子物体之后,再新建子物体,发现原来的子物体的函数依旧被调用了. 后来看了一下,发现是由于子物体绑定了一个父物体的委托,在销毁的时候没有去除父物体的委托. 但是这个调试 引发了我另外一个思考: 我发现在删除子物体之后,调用 tranform.childcout 属性,发现没有变为0. 删除子物体代码如下: 1 void DetoryChilds(Transform tar) 2 { 3 for (int i = tar.childCount - 1; i >= 0;

遍历子物体

2013-03-12 14:11 1439人阅读 评论(0) 收藏 举报 [javascript] view plaincopyprint? //应用户提问 也给大家分享一下 可以查找某个物体下无限层级的子物体名称 并返回该子物体 //把这个函数放到你的代码中 check代表你要查询的物体 name为名称 如return GetTransform(transform,"bone12"); Transform GetTransform(Transform check,string nam

unity中怎样获取全部子物体的组件

public GameObject[] obj; void Awake() { for (int i = 0; i < obj.Length; i++) { for (int j = 0; j < obj[i].transform.childCount;j++ ) { print("obj[i].transform.childCount=" + Enemy_Path[i].transform.childCount); obj[i].transform.GetChild(j)

反射获取成员变量,并修改值

/* * 反射获取成员变量,并修改值 * Person类中的成员String name */ public class ReflectDemo5 { public static void main(String[] args) throws Exception{ Class c = Class.forName("cn.itcast.demo1.Person"); Object obj = c.newInstance(); //获取成员变量 Class类的方法 getFields() c

GJM:Unity开发HTC vive 三、远处拖动3D物体 【转载】

腾讯GAD 窗间风月 原文URL : http://gad.qq.com/article/detail/7192223 版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 在项目中会需要拖动远处的物体,这种要如何去实现,下面就给大家介绍下在Unity HTC vive开发中远处拖动3D物体的教程. 效果如下,手柄射线照射到3D物体的时候,可以通过Trigger按钮抓住物体并拖动 1.导入SDK:SteamVR Plugin和Vive Input Utility 2.删除场景中的默认摄像机,将C

用EXCEL批量获取网页标题的方法

这段时间准备做淘宝,但不知道卖什么产品,因此想从一些B2B 网站上扒拉一些产品词下来挨个研究,但一个一个的打开网页查看产品太慢太费事,但想到这些产品词都存在于网页标题上,因此想到了用excel来批量获取网页的标题.经过一番查找,在网上找到了两种方法(其实是两组代码). 打开excel找到开发者工具,点击"Visual Basic" 在下图所示位置右键点击添加模块 填入如下代码: Function Title(url As String) As String With CreateObj

【图片】批量获取几百张图片

用途:需要图片时我们经常是去百度里随便找几张,次数多了就有点烦了,这个工具类就是批量获取几百张图片的url和描述. public class PicUrls { public static ArrayList<BasicPicBean> getPicList() { ArrayList<UrlBean> beans = new ArrayList<>(); beans.addAll(Arrays.asList(beans0)); beans.addAll(Arrays.

使用Powershell批量获取Exchange 2013邮箱用户容量使用量

今天有客户要求需要获取邮箱用户的一些基本信息,其中一项是邮箱容量使用情况.需要使用Powershell来批量获取这些信息,于是乎我开始着手编写Powershell脚本. 我了解到微软官网https://gallery.technet.microsoft.com/scriptcenter/Exchange-2010-2013-2016-cee5e558.提供了这个脚本,脚本实现的功能和我需要实现的功能大体一致,我也不用去费劲儿从头编写代码了.下面我将我改造后的脚本分享给大家. 1.脚本实现的功能