纳金网

标题: 【Unity3D脚本入门】访问组件 [打印本页]

作者: 驰骋的风    时间: 2013-1-30 11:48
标题: 【Unity3D脚本入门】访问组件
本文分享的是【Unity3D脚本入门】访问组件:
访问组件
作为一个游戏对象能有多个脚本(或其他组件).它不可避免的要访问其他组件的函数或变量.Unity中通过GetComponent() 函数来实现这个.我们现在要添加另外的脚本来让按下跳跃键(默认空格键)时让聚光灯射向Cube1.
让我们先思考这个问题,我们要做的是:
1. 监视跳跃键被按下.
2. 当跳跃键按下时,聚光灯将照射Cube1.我们如何做到这一点呢?那么Follow脚本包含一个”target”变量,其值确定哪些游戏对象被聚光灯所照射.我们需要为这个值设定一个新的参数.我们可以写代码给这个值为cube(看本节后的”写代码”),但我们知道暴露了这个变量,通过GUI上指定变量的值是更好的办法:
- 创建一个新的JavaScript脚本并重命名为Switch,
添加代码到Switch.js:
var switchToTarget : Transform;
function Update () {
if (Input.GetButtonDown("Jump"))
GetComponent(Follow).target = switchToTarget;
}
尤其注意关注GetComponent()的值,这将返回一个参考给Follow脚本,我们就可以用它来访问”target”变量.
-添加Switch脚本到聚光灯和将在检视视图中指定Cube1给switchToTarget值.
- 运行游戏,走动验证聚光灯像往常一样跟随着你,然后你按下空格键,聚光灯的焦点将转到Cube1上.
这样写代码

前面的教程中我们提到,可以通过写代码的方式指定变量(而不是通过Unity界面),让我们看看如何做.
记住,这只是用来比较,建议通过Unity界面来给变量赋值.早先按下空格时告诉聚光灯聚焦到Cube1上.
我们的解决方案是做一个暴露变量在Switch脚本,我们便可以在Unity的界面上拖拽Cube1上去.在代码中主要有两种方法做到这一点:
1. 使用游戏对象的名称(name)
2. 使用游戏对象的标签(tag)


1. 游戏对象名称
可以从层次视图中看到游戏对象的名称.用GameObject.Find()函数来使这些名称作为参数.
因此如果我们想按下跳跃键时候切换聚光灯从主相机到Cube1,代码如下::
function Update () {



if (Input.GetButtonDown("Jump"))
{
var newTarget = GameObject.Find("Cube").transform;
GetComponent(Follow).target = newTarget;
}
}
注意没有暴露变量而是直接使用代码.查看API获得更多Find()的用法.
2. 游戏对象标签
游戏对象表情是字符串用于识别一个组件.在检视视图中点击Tag按钮查看内建的标签.你也可以创建自己的标签. GameObject.FindWithTag()函数能通过具体标签寻找组件和返回一个字符串作为参数.
代码如下:
function Update () {
if (Input.GetButtonDown("Jump"))
{
var newTarget = GameObject.FindWithTag("Cube").transform;
GetComponent(Follow).target = newTarget;
}
}

作者: 驰骋的风    时间: 2013-1-30 14:00
目录

1. Unity3D脚本教程目的

2.Unity3D脚本前提

3. Unity3D脚本命名规范

4. Unity3D脚本Player输入

5. Unity3D脚本连接变量

7. Unity3D脚本实例

8. Unity3D脚本调试

9. Unity3D脚本常见脚本类型






欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5