U侠 发表于 2012-12-17 13:04

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 initializationvoid Start () {      //初始化对象的标签      gameObject.tag = tag;         //判定数组是否为空,不为空指定默认图片      if (photos.Length > 0)            renderer.material.mainTexture = photos;      else            Debug.Log("error!! Array is null!");}// Update is called once per framevoid Update () {}    //提供外部调用的接口函数    public void SetPhotos()    {      //改变图片编号      index++;      if (photos.Length > 0)            renderer.material.mainTexture = photos;      else            Debug.Log("error!! Array is null!");    }}/------------------------ SetPhoto.csend --------------------------------------------/我们把脚本附加给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 framevoid 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键将会改变矩形显示的图片,很简单吧,欢迎大家跟我交流经验..转自:http://blog.zol.com.cn/2434/article_2433659.html

窝头 发表于 2017-3-25 10:00

很不错

窝头 发表于 2017-3-25 09:13

楼主是超人

窝头 发表于 2017-3-25 09:38

好帖就是要顶

小杨 发表于 2017-3-25 09:50

顶顶多好

soloralun 发表于 2017-3-25 09:48

不错不错

blackyh 发表于 2017-5-6 16:16

很不错

jimsato 发表于 2017-5-6 16:55

好帖就是要顶

jy2002zzx 发表于 2017-5-6 16:54

说的非常好

joyhollo 发表于 2017-5-6 16:31

很好哦
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: Unity3D脚本之间互相调用