您的位置:首页 > 移动开发 > Unity3D

unity JavaScript 与 c# 脚本之间的通信

2016-09-03 10:33 295 查看
正常情况,我们可能会习惯于使用一种语言来写游戏,

但是,在某些时候,我们可能需要使用到 Java Script脚本和 C#脚本之间的互相通信。

这里用一个例子来说明和演示 Java Script 和 C#之间的区别。

创建两个立方体,

 

一个用 JS 脚本控制旋转,

 

一个用 C# 脚本控制旋转,

 

让JS的脚本去告知 C#脚本,速度变更为自身的3倍速度。

 

让C#脚本告知JS脚本,速度变更为自身的相同速度。



 

这里,可能因为 UNITY
版本不同的原因,

 

我买的书和在网上查找的一些方法,有一点问题。

 

下面是使用 5.X
实际测试可以运行的版本。

cShapeScript.cs脚本内容

 

usingUnityEngine;

usingSystem.Collections;

 

 

publicclass cShapeScript : MonoBehaviour {

 

 int speed = 40;

// Use thisfor initialization

void Start() {

}

// Updateis called once per frame

void Update() {

 transform.Rotate(Vector3.left*T
4000
ime.deltaTime*speed);

}

 void changeSpeed(int value)



 speed= value;

}

voidOnGUI()

{

  

  

 if(GUI.Button(new Rect(600,300,100,50),"call js"))

 { 

   GameObject objT = GameObject.Find("CubeJs");

  objT.GetComponent("jScript").SendMessage("changeSpeed",speed);

   

  } 

  

}

}

 

 

jScript.js 脚本内容

#pragmastrict

 

var speed:int = 80;

 

functionStart () {

 

}

 

functionUpdate () {

 

  transform.Rotate(Vector3.left*Time.deltaTime*speed);

  

  

}

 

functionchangeSpeed(value:int)



  speed = value;

}

 

functionOnGUI()

{

  

   

  if(GUI.Button(Rect(500,100,100,50),"call C#"))

  { 

    

    var objT :GameObject =GameObject.Find("CubeCs");

    var cs = objT.GetComponent("cShapeScript");

 

     cs.SendMessage("changeSpeed",speed*3);

  } 

   

}

 

这里,

 

传递方法信息用 SendMessage 是可以达到脚本间通信的效果的,

应该还有其他的方式方法也能达到通信的效果,

不过不同语言间的通信使用的频率并不高,

这里先浅尝辄止了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: