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 是可以达到脚本间通信的效果的,
应该还有其他的方式方法也能达到通信的效果,
不过不同语言间的通信使用的频率并不高,
这里先浅尝辄止了。
但是,在某些时候,我们可能需要使用到 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 是可以达到脚本间通信的效果的,
应该还有其他的方式方法也能达到通信的效果,
不过不同语言间的通信使用的频率并不高,
这里先浅尝辄止了。
相关文章推荐
- Unity 3d C#和Javascript脚本互相调用 解决方案(非原创、整理资料,并经过实践得来)
- Unity中C#与JavaScript相互通信
- JS or C#?不存在的脚本之争(UnityScript 不是 Javascript)
- [AJAA]Asynchronization JavaScript And ActiveX Falsh与C#通信 思想参考
- JAVASCRIPT AND C#.NET2.0 之间的传参问题(静态页面,动态页面,传参数,编码,乱码)
- 在C#中如何实现Form与Form之间的通信
- 在C#中如何实现Form与Form之间的通信
- 在C#中如何实现Form与Form之间的通信
- 在C#中调用VBScript、JavaScript等脚本的实现
- C++和C#进程之间通过命名管道通信(上)
- C++和C#进程之间通过命名管道通信(附源码)—下
- 在head标记对之间放置JavaScript脚本代码
- 关于用户自定义控件与引用该控件的页面之间的javascript脚本冲突
- 在body标记对之间放置JavaScript脚本代码
- 在C#中如何实现Form与Form之间的通信
- 给 C# 代码动态着色的 JavaScript 脚本
- JavaScript 和 Macromedia Flash 之间的通信示例
- 在C#中如何实现Form与Form之间的通信(winform 内容)
- 在C#中调用VBScript、JavaScript等脚本的实现
- Tip #9 IIS7,用Configuration Editor生成修改配置的C#, JavaScript 或 AppCmd脚本