查看: 2550|回复: 85

[脚本] Unity3D脚本之间互相调用

[复制链接]

36

主题

14

听众

201

积分

小学生

Rank: 2

升级   0.33%

发表于 2012-12-17 13:04 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!

简洁明了的一篇基础教程,对脚本使用比较陌生的新手可以学习下!
Unity3d可以用脚本实现不少功能,把咱们的学习难度降到很低了,基本上只要会C++,就可以参照Unity3D的脚本说明,编写脚本,不可谓不方便,虽然Unity3d脚本使用C#或者JavaScript,但是如果你会C++,相信C#难不到你。

    Unity3d的对象可以添加很多脚本,脚本与脚本之间怎么联系呢,下面用个简单的例子说明下,希望能帮到大家。
[/url]

比如一个场景中有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对象,就会像下面那样。

[url=http://photo.zol.com.cn/photo/10660552.html]  
[/url]

注意给每个对象设置不同标签,这样我们好找到对象。

PS:一定要先给场景增加标签,否则系统识别不出来的。

[url=http://photo.zol.com.cn/photo/10660608.html]

点击Tag,里面有个add Tag,选择增加标签......

[/url]


增加咱们需要的标签.......

然后我们给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个矩形显示不同的图片.


[url=http://photo.zol.com.cn/photo/10660797.html]

大家可以试验下,按下F键和S键将会改变矩形显示的图片,很简单吧,欢迎大家跟我交流经验..转自:http://blog.zol.com.cn/2434/article_2433659.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

楼主热帖
已有 1 人评分道具币 收起 理由
L1247 + 1 很给力!

总评分: 道具币 + 1   查看全部评分

星期天 星期一 过度很痛苦

0

主题

18

听众

200

积分

小学生

Rank: 2

升级   0%

发表于 2017-3-25 10:00 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

18

听众

200

积分

小学生

Rank: 2

升级   0%

发表于 2017-3-25 09:13 |显示全部楼层
楼主是超人
回复

使用道具 举报

0

主题

18

听众

200

积分

小学生

Rank: 2

升级   0%

发表于 2017-3-25 09:38 |显示全部楼层
好帖就是要顶
回复

使用道具 举报

0

主题

18

听众

203

积分

小学生

Rank: 2

升级   1%

发表于 2017-3-25 09:50 |显示全部楼层
顶顶多好
回复

使用道具 举报

0

主题

18

听众

201

积分

小学生

Rank: 2

升级   0.33%

发表于 2017-3-25 09:48 |显示全部楼层
不错不错
回复

使用道具 举报

0

主题

18

听众

204

积分

小学生

Rank: 2

升级   1.33%

发表于 2017-5-6 16:16 |显示全部楼层
很不错
回复

使用道具 举报

1

主题

18

听众

204

积分

小学生

Rank: 2

升级   1.33%

发表于 2017-5-6 16:55 |显示全部楼层
好帖就是要顶
回复

使用道具 举报

0

主题

18

听众

206

积分

小学生

Rank: 2

升级   2%

发表于 2017-5-6 16:54 |显示全部楼层
说的非常好
回复

使用道具 举报

0

主题

18

听众

204

积分

小学生

Rank: 2

升级   1.33%

发表于 2017-5-6 16:31 |显示全部楼层
很好哦
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 苏ICP备12051100号 )   

GMT+8, 2019-9-18 03:39 , Processed in 0.114065 second(s), 45 queries .