2019-07-23 17:28:36 qq_34229678 阅读数 774
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

Unity3D 获取当前物体为第几个子物体

快下班了,没想到今天能写两篇新发现。

不多说,直接上代码了:

print(transform.GetSiblingIndex());//显示当前物体为第几个子物体
2015-09-17 21:05:13 liuweiyuxiang 阅读数 7526
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

1.transform.gameobject()可以使用物体的transform组件获取到物体本身

2.获取active为false的物体的两种方法

方法一:GameObject.Find()是不能获得active为false的物体的。可以定义一个public的 GameObject变量,如go,将go指向要引用的物体上,(可以使用拖拽的方法),这样在脚本里,只要使用go就能访问到go所引用的物体,不论该  物体的active属性是false或是true

方法二:通过transform.Find()函数去查找,不过要给要查找的物体加上父物体用父物体的transform组件去查找,没有父物体就给它添加一个空的父物体。如:我们想要获取到active为false的huaqun物体,则可以给花裙物体添加一个空的父物体为empty,然后为empty绑定脚本findNotAvtive.cs

脚本主要内容如下:

void Update () {
        GameObject go = transform.Find ("huaqun").gameObject;
        Debug.Log (go.name);
    }


这样无论huaqun物体的active属性是true还是false都能获取到花裙物体


2017-06-26 14:27:29 qq_33731301 阅读数 692
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

最近再写一个NGUI下替换所有label字体颜色的程序,需要代码获取UIroot下的所有UIlabel。但是有部分UIlabel是没有激活的,尝试了几种方式来获取。

1.      GetComponentInChild方法

将代码写在start方法中,挂在UIRoot上,如下

UILabel[] childs =GetComponentsInChildren<UILabel>(true);
        foreach (UILabel child in childs) {
            Debug.Log (child);
        }

即能获取激活状态的UILabel,又能获取未激活的UILabel

UI层次结构

运行结果输出如下,激活和未激活的label都可以找到

                                                        

调试台运行结果

参考:http://answers.unity3d.com/questions/52560/gameobjectfind-work-on-inactive-objects.html

2015-05-04 13:34:43 Stephen167 阅读数 895
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚
foreach (Transform child in transform)
{
    Debug.Log(child.gameObject.name);
}

 

 

转自:http://blog.csdn.net/m_leonwang/article/details/38822455

 

 

 

2017-08-14 16:23:38 qq_33994566 阅读数 11731
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

开发中我们需要获取模型的尺寸,以及设计用户通过面板来更改模型的尺寸,这就需要我们计算出每个标准的模型长宽高。

第一种:通过Collider

我们给物体添加Collider。通过代码:Vector3 length = go.GetComponent<Collider>().bounds.size;即可得到我们想要的结果。此方法是以collider为参考测量的,所以和模型的scale有关系。

 

第二种:通过组件MeshFilter

每个模型都有MeshFilter,里面的mesh存储着模型的顶点信息。先通过GetComponent<MeshFilter>().mesh.bounds.size获取模型的mesh三维大小。而实际在空间的大小和自身的scale以及父物体的scale决定的,所以这里我们要将刚刚得到的vector3类型的值中的xyz分量和模型的transform.lossyScale的xyz分量相乘就是最后物体实际的大小。

 

Vector3 length = go.GetComponent<MeshFilter>().mesh.bounds.size;
        float xlength = length.x * transform.lossyScale.x;
        float ylength = length.y * transform.lossyScale.y;
        float zlength = length.z * transform.lossyScale.z;

 

 

 

 

 

 

UI的大小获取和三维物体大小获取会有些不同:

 

float xl = GetComponent<RectTransform>().rect.size.x;
        float yl = GetComponent<RectTransform>().rect.size.y;

 

 

 

 

 

unity3d 设置子物体

阅读数 4081

没有更多推荐了,返回首页