文章目录

  • 常用属性和方法
  • 静态方法
  • GameObject的GetInstanceID()和GetHashCode()
  • 属性
  • 方法
  • 利用RequireComponent添加一个组件
  • 静态方法
  • 拓展HideFlags


常用属性和方法

静态方法

方法名

作用

Destroy( GameObject Obj,float f )

销毁对象,Obj是要销毁的对象,f是时间用来延时销毁,默认是0不写的时候表示立即销毁

DontDestroyOnLoad(GameObject Obj)

加载到新场景时该物体 (Obj) 不会被销毁,但是要小心,要避免在场景切换回来时又执行一次, 最好加一个判断

FindObjectOfType()

按类型查找游戏对象 T 是要查找的类型,比如Transform

FindObjectsOfType()

按类型查找多个游戏对象 T 是要查找的类型,比如Transform

Instantiate(Object original);

original:用来做复制操作的对像物体,源对象

Instantiate(Object original, Transform parent);

parent:实例化对象的父对象,在完成实例化函数处理后,实例化对象将在父对象下,是父对象的子对象

Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);

instantiateInWorldSpace:个值为TRUE,表示实例化对象相对于世界坐标系的位置不变,相对于父对象的坐标值变了。为false,表示实例化对象相对于父对象的坐标值不变,但在世界坐标系中的位置变了。

Instantiate(Object original, Vector3 position, Quaternion rotation);

position:实例化的对象的位置坐标,rotation:实例化的对象的旋转坐标(旋转四元数)

Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

实例化的对象的时候传入坐标值、角度值并设置父对象

GameObject的GetInstanceID()和GetHashCode()

这两个方法都是获取游戏对象的唯一ID标识。在做对象缓存池时,可以用到。
同一个Prefab,不管是Inspector挂上去的还是用Resource.Load()动态加载的,这个ID都是一样的。只有当Instantiate成对象之后,每个对象间的ID才会有区别。
不同的Prefab,ID是不一样的
两个方法获取到的值是一样的

属性

名称

作用

activeInHierarchy

表示gameobject在场景中的是否显示,也就是说要使这个值为true,这个物体及其所有父物体(及祖先物体)的activeself状态都为true,若有一个父物体为false则为false。

activeSelf

物体本身的active状态,对应于其在inspector中的checkbox是否被勾选。

isStatic

这个是用于遮挡剔除,看是否一个对象能被看做一个静态的遮挡。

layer

游戏对象的层

scene

游戏对象的场景

tag

游戏对象的标签

transform

游戏对象的transform组件

Layer的概念:

一方面相机中可以设置是否渲染某layer

Unity 安卓地址保存 unity保存gameobject_ide


另一方面可以再raycast中设置是否忽略检测某layer。

layermask参数设置的一些总结:
1 << 10 打开第10的层。
~(1 << 10) 打开除了第10之外的层。
~(1 << 0) 打开所有的层。
(1 << 10) | (1 << 8) 打开第10和第8的层。

方法

名称

作用

AddComponent()

添加组件,T 是要添加的组件类型

BroadcastMessage()

将消息传递给对象和其所有子对象的所有脚本

SendMessage()

将消息传递给对象的所有脚本

SendMessageUpwards()

将消息传递给对象和其所有父对象的所有脚本

SetActive(bool b)

改变的是物体自身的activeSelf状态,所以,对一个物体SetActive时,其在场景中可能不会被激活,因为其祖先物体可能存在未被激活的。

CompareTag(string s)

判断标签是否和 s 相同

GetComponent()

获得 T 组件的信息

GetComponentst()

获得多个 T 组件的信息

GetComponentsInChildren(bool b);

T是组件类型 b为true,游戏对象下的子物体激活的没激活的都会被拿到,包括游戏对象本身 b为false 没激活的不会被拿到

GetComponentsInParent(bool b);

同上,但是获取的是父对象

”SendMessage“、”SendMessageUpwards“、”BroadcastMessage“他们都有同样的参数

名称

作用

methodName

用来接收的方法名

value

是object类型,若是多个参数则可以通过传入object数组来进行

options

可以不加,用来抛出错误

利用RequireComponent添加一个组件

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Transform))]
[RequireComponent(typeof(PlayerController))]

RequireComponent作用是这个类一定需要哪些组件,如果目前这些组件没有被加上,就自动加上。

静态方法

名称

作用

CreatePrimitive()

创建基本物体(比如正方体) 例如: CreatePrimitive(PrimitiveType.Plane);

Find(String s)

通过对象Name来查找一个游戏对象,但是不能找到非激活的对象

FindWithTag(String s)

通过标签来查找一个游戏对象,但是不能找到非激活的对象

FindGameObjectsWithTag(String s)

通过标签来查找多个游戏对象,但是不能找到非激活的对象

拓展HideFlags

名称

作用

None

默认情况,正常可见对象

HideInHierarchy

在Hierarchy视图中隐藏,并且如果它保存在一个资源中,不会显示在Project视图中

HideInInspector

在Inspector视图中隐藏,无法查看其相关的组件

DontSaveInEditor

NotEditable

对象可以显示在Inspector视图中,但是不能被编辑

DontSaveInBuild

DontUnloadUnusedAsset

DontSave

对象不会保存到场景中,当一个新的场景创建的时候也不会被销毁

HideAndDontSave

是HideInHierarchy和DontSave的组合