开发者社区> 二哈卖豆腐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Unity中GameObject API解析

简介: 如何在脚本中获取自身所在的GameObject? 我们知道脚本必须挂在一个GameObject上面才能执行,那么如何知道当前脚本所挂载的GameObject是哪一个呢? 这就需要用到gameObject属性了。
+关注继续查看

如何在脚本中获取自身所在的GameObject?

我们知道脚本必须挂在一个GameObject上面才能执行,那么如何知道当前脚本所挂载的GameObject是哪一个呢?

这就需要用到gameObject属性了。

gameObject属性可以在所有继承MonoBehaviour的类中获取到,因为脚本必须要挂在到一个物体上才能执行,这个gameObject就是脚本挂到的物体。

using UnityEngine;

public class Test : MonoBehaviour

{

void Start ()

{

Debug.Log(gameObject.name, gameObject);

}

}

上面的代码就会打印出脚本所挂物体的名字。

注意这里Debug.Log传入了两个参数,这是为什么呢?

遇到这种问题,我们首先查一下Unity的文档。
为什么要查Unity的文档呢?

从图中可以看到,将光标移到Debug上面时,显示Debug类是属于UnityEngine这个命名空间的,也就是Unity提供的API。

Debug.Log有两种形式:

public static void Log(object message);public static void Log(object message, Object context);

第二种形式中可以传入一个Object类型的参数,传入这个参数时,在Console中显示的log会与脚本所在的物体关联。点击Console中这条信息时,会在Hierarchy中高亮这一个物体。

如何通过物体名字查找物体?
GameObject类中有一个静态(static)方法Find,用于通过名字查找场景中的物体。

什么是静态方法?
静态方法是标记为static的方法。静态方法独立于实例对象存在。即使没有类的实例,仍然可以通过类名.静态方法调用。静态方法中不能访问实例成员,可以访问其他静态成员。

静态方法在定义时需要在返回值类型前面加上static修饰符,比如:

static void Walk(){

Debug.Log("Walking");

}

访问时,可以直接通过类名.方法名调用。比如查找物体的方法就是GameObject.Find("cat")。

查找的名称字符串中可以包含“/”,比如GameObject.Find("animals/cat")就只会查到父物体名字为animals的cat物体。如果“/”字符在字符串中最开始的位置,那么会在根节点开始找,比如GameObject.Find("/animals/cat")就只会查到根节点为animals物体的子物体cat。

查找过后,一定要判断一下是否为空,因为Find有可能找不到你想找的物体。

特别注意1
这个方法的效率比较低,不要在Update中调用此方法,否则可能会造成游戏卡顿。一般的做法是,在Awake或Start方法中通过Find找到,然后保存到成员变量中。

特别注意2
这个方法无法找到active为false的物体。
那么如何查找active为false的物体呢?
1、不要使用Find,直接在代码中通过public的变量关联物体。
2、不要设置物体的active为false,先在游戏最开始时通过代码找到物体,然后通过代码设为false
3、通过transform.Find,我们明天会讲到。

更多unity2018的功能介绍请到paws3d爪爪学院查找。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于SVG的web页面图形绘制API介绍
一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标记语言,SVG的 全称是可扩展的矢量图形跟传统的Raster方式的图形(JPG, PNG, GIF等)有很大的差 别。
849 0
ASP.NET Web API 简介
本周早些时候,我写过一篇关于 ASP. NET MVC 4 测试版的博文。ASP. NET MVC 4 是一个重大的更新,它带来了一堆出色的新功能。我最兴奋的改进之一是为创建"Web ApI"提供了支持。
738 0
ASP.NET Web API(二):安全验证之使用HTTP基本认证
在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API。 我们在接触了Web API的后就立马发现了有安全验证的需求,所以这篇文章我们先来讨论下安全验证一个最简单的方法:使用HTTP基本认证。
882 0
ASP.NET Web API(一):使用初探,GET和POST数据
概述 REST(Representational State Transfer表述性状态转移)而产生的REST API的讨论越来越多,微软在ASP.NET中也添加了Web API的功能。 我们看dudu的文章HttpClient + ASP.NET Web API, WCF之外的另一个选择知道了博客园也开始使用了Web API,且在使用Web API Beta版本的时候遇到了这个问题:痴情意外:ASP.NET WebAPI RC 竟然不支持最常用的json传参。
889 0
【翻译】ASP.NET WEB API异常处理
当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的数据 则返回了错误码为404的错误 (页面未找到) public Product ...
728 0
x3d
[转]选择Web API:REST 还是 SOAP
看起来在web API协议之争(如果曾经有过)中,潮流正稳步的转向REST,SOAP已经被逼退。Web开发者们选出了他们心目中的目标,他们要RESTful APIs。 下面的是2008年和2010年各种不同的API协议部署量的对比图,来源于ProgrammableWeb上的2000多个web API目录数据。
676 0
【翻译】ASP.NET Web API入门
简介 ASP.NET Web API是一个可以简化创建HTTP服务的框架 它支持包括浏览器和移动设备在内的各种客户端 ASP.NET Web API是在.NET Framework上创建RESTful应用程序的理想平台 译者注:关于RESTful web服务可以参见这里:http://zh.
974 0
网页中必不可少的十五大Web API
引文:http://news.csdn.net/n/20071024/109897.htmlAPI全称是application programming interface即应用编程接口,程序员可以编写应用和Widget跟页面的服务器实现交互,API提供了基于web的数据和功能访问接口。
988 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
React Native项目实战优化之路
立即下载
阿里云 API 精选手册(Alibaba Cloud API Playbook)
立即下载
API 网关实践
立即下载