GameObject本身没有功能,是Unity场景里所有组件的基类,但很多时候我们需要在脚本中操作GameObject。先讲一下GameObject类包含哪些内容,其中常用的用红色标出了

Variables 变量

activeInHierarchy Is the GameObject active in the scene?
场景中的游戏对象是否激活?
activeSelf The local active state of this GameObject. (Read Only)

该游戏对象的局部激活状态。(只读)
isStatic Editor only API that specifies if a game
object is static.
如果一个游戏对象是静态仅在编辑器API指定。
layer The layer the game object is in. A layer is in the range [0…31].

游戏对象所在的层,层的范围是在[0…31]之间。
scene Scene that the GameObject is part of.
场景物体。
tag The tag of this game object.
这个游戏对象的标签。
transform The Transform attached to this GameObject. (null if there is none
attached).
附加于这个游戏对象上的变换。(如果没有则为空)

Constructors 构造器

GameObject Creates a new game object, named name.
创建一个新的游戏物体,命名为name。

Functions 函数

AddComponent Adds a component class named /className/ to the game object.

添加一个名称为className的组件到游戏对象。
BroadcastMessage Calls the method named /methodName/ on every MonoBehaviour in
this game object or any of its children.

对此游戏对象及其子对象的所有MonoBehaviour中调用名称为methodName的方法。
CompareTag Is this game object tagged with /tag/?

此游戏对象是否被标记为tag标签?
GetComponent Returns the component of Type /type/ if the game object has one
attached, null if it doesn't.
如果这个游戏对象附件了一个类型为type的组件,则返回该组件,否则为空。
GetComponentInChildren Returns the component of Type /type/ in the GameObject or any of
its children using depth first search.
返回此游戏对象或者它的所有子对象上(深度优先)的类型为type的组件。
GetComponentInParent Finds component in the parent.
从父对象查找组件。
GetComponents Returns all components of Type /type/ in the GameObject.

返回该游戏对象所有type类型的组件列表。
GetComponentsInChildren Returns all components of Type /type/ in the GameObject or any of
its children.
返回此游戏对象与其子对象所有type类型的组件。
GetComponentsInParent Returns all components of Type /type/ in the GameObject or any of
its parents.
返回此游戏对象与其父对象所有type类型的组件。
SampleAnimation Samples an animation at a given time for any animated properties.

用于任何动画剪辑在给定的时间采样动画。
SendMessage Calls the method named /methodName/ on every MonoBehaviour in
this game object.
在这个游戏物体上的所有MonoBehaviour上调用名称为methodName的方法。
SendMessageUpwards Calls the method named /methodName/ on every MonoBehaviour in
this game object and on every ancestor of the behaviour.

在这个游戏物体及其祖先物体的所有MonoBehaviour中调用名称为methodName的方法。
SetActive Activates/Deactivates the GameObject.
激活/停用此游戏对象。

Static Functions 静态函数

CreatePrimitive Creates a game object with a primitive mesh renderer and appropriate collider.
创建一个带有原型网格渲染器和适当的碰撞器的游戏对象。
Find Finds a game object by /name/ and returns it. 
找到并返回一个名字为name的游戏物体。
FindGameObjectsWithTag Returns a list of active GameObjects tagged /tag/. Returns empty array if no GameObject was found. 
返回具体tag标签的激活的游戏对象列表,如果没有找到则为空。
FindWithTag Returns one active GameObject tagged /tag/. Returns null if no GameObject was found. 
返回标记为tag的一个游戏对象,如果没有找到对象则为空。

 
下面举几个例子
 
  public static GameObject Find(string name)
    Find找到并返回一个名字为name的游戏物体,如果以name为名字的游戏物体没有被找到,则返回空.。  如果name中包含'/'字符,这个名称将被视作一个hierarchy中的路径名,比如GameObject.Find("animals/cat")就只会查到父物体名字为animals的cat物体。.这个函数只返回活动的游戏物体。  
  除非迫不得已,建议不要在每一帧中使用这个函数。因为其效率比较低,一般的做法是,在Awake或Start方法中通过Find找到,然后保存到成员变量中。
  注:Find查找时,只要是当前场景下的物体默认都可以查找到,而且不管是将脚本挂在那个对象上都可以查找到
    如果有多个同名对象,只能查找到一个
 
  那么如何查找active为false的物体呢?
    1、不要使用Find,直接在代码中通过public的变量关联物体。
    2、不要设置物体的active为false,先在游戏最开始时通过代码找到物体,然后通过代码设为false
    3、通过transform.Find
 
  下面例子演示怎么查找到名为Hand的GameObject物体
using UnityEngine;

using System.Collections;

public class ExampleClass : MonoBehaviour {

    public GameObject hand;

    void Example() {

        hand = GameObject.Find("Hand");

        hand = GameObject.Find("/Hand");

        hand = GameObject.Find("/Monster/Arm/Hand");

        hand = GameObject.Find("Monster/Arm/Hand");

    }

}

  FindWithTag用法与此类似,这里就不举例了

  public Component GetComponent(Type type)

  type 表示检索数组的类型

  如果这个游戏对象附件了一个类型为type的组件,则返回该组件,否则为空。

using UnityEngine;

public class GetComponentExample : MonoBehaviour
{
void Start()
{
HingeJoint hinge = gameObject.GetComponent(typeof(HingeJoint)) as HingeJoint; if (hinge != null)
hinge.useSpring = false;
}
}

  

  public T GetComponent()   

using UnityEngine;

public class GetComponentGenericExample : MonoBehaviour
{
void Start()
{
HingeJoint hinge = gameObject.GetComponent<HingeJoint>(); if (hinge != null)
hinge.useSpring = false;
}
}

  public Component GetComponent(string type)

    type 表示检索数组的类型

       如果这个游戏对象附件了一个类型为type的组件,则返回该组件,否则为空。

using UnityEngine;

public class GetComponentNonPerformantExample : MonoBehaviour
{
void Start()
{
HingeJoint hinge = gameObject.GetComponent("HingeJoint") as HingeJoint; if (hinge != null)
hinge.useSpring = false;
}
}

  

  当你把脚本挂在一个物体上之后,脚本中的gameObject代表该物体,例如可以通过gameObject.name来获取脚本挂载对象的名字

 
 

U3D GameObject 解读的更多相关文章

  1. U3D中GameObject.Find无法找到元件

    U3D中GameObject.Find 如果某元件SetActive(false)了,Find()无法找到 因为Find()只会帮你找出正在活动中的物件,所以在将物件关闭前,我们必须将此物件放至预先定 ...

  2. u3d一个GameObject绑定两个AudioSource

    u3d 一个GameObject绑定两个AudioSource  ,使他们分别播放,并控制 using UnityEngine; using System.Collections; public cl ...

  3. U3D NGUI改变GameObject Activity闪烁的问题

    不是关闭再激活GameObject会闪烁,而是再激活时,NGUI渲染步骤不一致导致的闪烁. 并且文字激活后渲染要慢一帧,如果延迟一帧处理,又会导致精灵图片快一帧,图片重叠.这个测试结果不一定准确,先记 ...

  4. U3D——Unity3D的脚本-script入门

     Unity3D的基本操作非常easy就能掌握了,接下来就是游戏系统的核心部分:脚本. 什么是Script(脚本)?简而言之,就是使用代码来运行一系列动作命令的特殊文本,它须要编译器来从新解读.U ...

  5. u3d中的INput

    属性 属性: 功能: 轴 (Axes) 包含当前工程的所有定义的输入轴:数目 (Size) 该工程中不同输入轴的数量,元素 0.1.... 是要修改的特定的轴. 名称 (Name) 在游戏启动器中以及 ...

  6. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  7. U3D杂记

    1,点击UI上的登录按钮,从脚本发出ioo.netmanager.SendConnet->进入CS->soketclient.sendconnet...->netmanager调用 ...

  8. [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]

    1.导出Xcode工程 File->Building and setting,导出IOS工程(有错误会失败) 2.运行Xcode工程,在Classes文件夹的UI文件夹里,早到UnityAppC ...

  9. [U3D 画起重机,绑脚本和控制它运动的基本操作]

    之前在学习Unity3D,不知为何网上的教学资源真是少啊...我某段时间还卡在不知如何让物体绑个脚本自动运动.. 之所以要学习U3D是因为导师让我做的IOS项目里有个需要模拟起重机,从而控制真实起重机 ...

随机推荐

  1. Blast

    NCBI 教程:https://www.ncbi.nlm.nih.gov/books/NBK279681/ 本地使用 blast 的步骤 1. 构建本地数据库索引 $makeblastdb -in h ...

  2. websocket的简单使用

    一 轮询 什么是轮询:设置每一段时间去访问一次服务器,然后服务器返回最新的数据.这样服务器的压力会非常的大,并且还会有延迟.适用于小型程序. 实现:再客户端的页面设置一个定时发送请求的任务,每个这段时 ...

  3. hadoop 有那些发行版本

    hadoop发行版本 1. apache hadoop  http://hadoop.apache.org/ 2. cloudera hadoop(CDH) https://www.cloudera. ...

  4. JavaScript:event loop详解

    之前已经有两篇随笔提到了event loop,一篇是事件机制,一篇是tasks和microtasks,但是里面的event loop都是文字描述,很难说细,逻辑也只是简单的提了一遍.其实之前也是通过阮 ...

  5. Codeforces Round #540 (Div. 3)--1118C - Palindromic Matrix

    https://codeforces.com/contest/1118/problem/C 在查找元素的时候,必须按4,2,1的顺序进行.因为,如果先找1,可能就把原来的4拆散了,然后再找4,就找不到 ...

  6. Delphi fmx控件在手机滑动与单击的问题

    Delphi fmx控件在手机滑动与单击的问题 (2016-03-08 10:52:00) 转载▼ 标签: it delphi 分类: Delphi10 众所周知,fmx制作的app,对于象TEdit ...

  7. 【leetcode】 算法题3 无重复字符的最长子串

      问题      给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度 ...

  8. React-Native 问题随记2: com.android.builder.testing.api.DeviceException

    错误详细: Execution failed for task ':app:installDebug'.> com.android.builder.testing.api.DeviceExcep ...

  9. [git] 常用配置

    基本配置 对git进行配置时使用 git config 命令进行操作 1. git config 的作用域,缺省等于 local git config --local   #只针对某个仓库有效 git ...

  10. windows上xshell6的安装

    各位大兄弟,好用的xshell组件来了,话不多说,开搞. 软件链接链接:https://pan.baidu.com/s/1vcRo2L-LNe2BrJ9-VCy57A 密码:ei73 有下面四个软件, ...