纳金网
标题:
Unity3d脚本之间互相调用
[打印本页]
作者:
会飞的鱼
时间:
2011-11-11 15:08
标题:
Unity3d脚本之间互相调用
简洁明了的一篇基础教程,对脚本使用比较陌生的新手可以学习下!
Unity3d可以用脚本实现不少功能,把咱们的学习难度降到很低了,基本上只要会C++,就可以参照Unity3D的脚本说明,编写脚本,不可谓不方便,虽然Unity3d脚本使用C#或者JavaScript,但是如果你会C++,相信C#难不到你。
Unity3d的对象可以添加很多脚本,脚本与脚本之间怎么联系呢,下面用个简单的例子说明下,希望能帮到大家。
比如一个场景中有3个对象,现在我想通过control对象控制pall
_
1和pall
_
2显示不同图片。(pall
_
1和pall
_
2是2个Cube)
对象pall
_
1和pall
_
2所做的是同一件事情,只是可能图片不同,所以我们可以给他们添加同一个脚本SetPhoto.cs,这个脚本所完成的就是更改图片,设置图片数组,设置对象的标签,已经写注释了,相信都能看明白。
/------------------------ SetPhoto.cs --------------------------------------------/
using UnityEngine;
using System.Collections;
public class SetPhoto : MonoBehaviour {
//图片数组
public Texture [] photos;
//数组指针
private int index = 0;
//字符标签,用户控制填写
public string tag;
// Use this for initialization
void Start () {
//初始化对象的标签
gameObject.tag = tag;
//判定数组是否为空,不为空指定默认图片
if (photos.Length > 0)
renderer.material.mainTexture = photos[index % photos.Length];
else
Debug.Log("error!! Array is null!");
}
// Update is called once per frame
void Update () {
}
//提供外部调用的接口函数
public void SetPhotos()
{
//改变图片编号
index++;
if (photos.Length > 0)
renderer.material.mainTexture = photos[index % photos.Length];
else
Debug.Log("error!! Array is null!");
}
}
/------------------------ SetPhoto.cs end --------------------------------------------/
我们把脚本附加给pall
_
1和pall
_
2对象,就会像下面那样。
注意给每个对象设置不同标签,这样我们好找到对象。
PS:一定要先给场景增加标签,否则系统识别不出来的。
点击Tag,里面有个add Tag,选择增加标签......
增加咱们需要的标签.......
然后我们给Control对象附加一个脚本,用它来控制那2个对象,脚本名:controls.cs
/------------------------ controls.cs --------------------------------------------/
using UnityEngine;
using System.Collections;
public class controls : MonoBehaviour {
// 首先创建2个对象
private GameObject myobj;
private GameObject myobj2;
void Start () {
//获得不同标签的对象
myobj = GameObject.FindWithTag("wall
_
1");
myobj2 = GameObject.FindWithTag("wall
_
2");
}
// Update is called once per frame
void Update () {
//弹开F键要做什么
if (Input.GetKeyUp("f"))
{
//获得标签1附加的脚本对象
SetPhoto s = myobj.GetComponent();
//调用脚本的函数
s.SetPhotos();
}
if (Input.GetKeyUp("s"))
{
//获得标签2附加的脚本对象
SetPhoto s2 = myobj2.GetComponent();
//调用脚本的函数
s2.SetPhotos();
}
}
}
/------------------------ controls.cs end ---------------------------------------/
这个脚本实现的功能就是首先找到pall
_
1和pall
_
2对象,然后调用给他们附加的SetPhoto脚本中的SetPhotos方法,用来改变2个矩形显示不同的图片.
大家可以试验下,按下F键和S键将会改变矩形显示的图片,很简单吧,欢迎大家跟我交流经验
作者:
晃晃
时间:
2012-1-26 23:21
新年新气象,我来把歌唱:祝你身体棒,来年不发胖;家和万事畅,心花怒绽放;事业无风浪,生意蒸蒸上;要是把我忘,就找你算账。新年快乐!
作者:
tc
时间:
2012-1-27 23:31
我想要昙花永不凋谢常开人间,我想要冬天阳光明媚融冰化雪,我想要流星永不消失点缀夜空,我更想要你在新的一年里开心天天!
作者:
晃晃
时间:
2012-2-5 23:26
心中有爱,爱咋咋地
作者:
菜刀吻电线
时间:
2012-3-1 23:18
灌水。。。
作者:
晃晃
时间:
2012-6-1 23:26
读铁系缘分,顶铁系友情
作者:
晃晃
时间:
2012-7-4 23:27
好`我顶``顶顶
作者:
C.R.CAN
时间:
2012-7-13 23:22
不错 非常经典 实用
作者:
晃晃
时间:
2012-7-14 23:26
心中有爱,爱咋咋地
作者:
晃晃
时间:
2012-7-28 23:19
“再次路过……”我造一个-----特别路过
作者:
tc
时间:
2012-8-24 00:13
已阵亡的 蝶 随 风 舞 说过 偶尔按一下 CTRL A 会发现 世界还有另一面
作者:
C.R.CAN
时间:
2012-9-27 23:26
好`我顶``顶顶
作者:
菜刀吻电线
时间:
2013-2-24 23:20
谢谢楼主,真是太实用了
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5