Unity⼯程⾥⾯关于JS和C#互相调⽤详解
js脚本开发⼤家周末好(苦逼的我还在搬砖,哈哈)。
最近接⼿了⼀个unity项⽬,⼯程⾥⾯是js和c#同时开发的(真想锤死这开发者),然后再后续的优化和功能开发中就遇到了js和c#之间调⽤的问题。
今天我就为⼤家好好的讲⼀下这个js和C#之间的调⽤及其相关注意事项:
⾸先,我们要明⽩⼀点:两种语⾔的编译顺序,如果我们要C#调⽤js,那我们肯定要让JS先编译,如果被调⽤的没有事先被编译,那不是null了?反之亦是如此。(谁先被调⽤,谁就先编译)。
接着,我们来说⼀下unity⾥⾯编译的顺序。在unity⾥⾯主要分为 Standard Assets、Pro Standard Assets、 Plugins和其他⽂件夹。其编译顺序也是先编译上⾯三个⽂件,然后再编译其他⽂件。
然后,我们来演⽰JS调⽤C#(这个时候需要C#先编译!创建⼀个js脚本,⼀个C#脚本)
如图:
C#脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestC : MonoBehaviour {
void Start()
{
}
/// <summary>
/// js将调⽤此⽅法 --参数由js脚本传⼊
/// </summary>
/
// <param name="str"></param>
public void PrintCS(string str)
{
Debug.Log(str + ":C#⽅法被调⽤");
}
}
**js脚本:
**
#pragma strict
function Start ()
{
var cs1=gameObject.GetComponent("TestC");
(cs1 as TestC ).PrintCS("从js中调⽤ ");
}
其中值得注意的是js脚本创建某个类的对象时,⼀定要将对象强转为该类类型:
不然会出现如下报错:
最后C#调⽤JS也就很简单了,但是⼀定要记得脚本编译顺序。
(测试的时候记得在场景中挂载脚本哦,js和c#都要挂载)
好啦!今天就到这⾥啦,关于c#和js相互调⽤其实还有很多细节点,⼤家可以多参考参考相关⽂档和博客,后续有时间我也会继续分享更多开发技术和乐闻。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论