1.1、同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中
JSTest.js
#pragma strict private var i:int; private var f:float; function Start () { } function Update () { } function SetInt(_i:int) { i=_i; } function SetFloat(_f:float) { f=_f; } function GetInt():int { return i; } function GetFloat():float { return f; }
CSharp.cs
using UnityEngine; using System.Collections; public class CSharpTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } int i; float f; public void SetInt(int i) { this.i = i; } public void SetFloat(float f) { this.f = f; } public int GetInt() { return i; } public float GetFloat() { return f; } }
1.2、JS,C#调用方法赋给Main Camera
MainJS.js
#pragma strict var obj:GameObject; function Start () { obj=GameObject.Find("Cube"); var js:JSTest=obj.GetComponent(JSTest); js.SetInt(1); js.SetFloat(1.1); print("JS GetInt :"+js.GetInt()); print("JS GetFloat:"+js.GetFloat()); } function Update () { }
MainCharp.cs
using UnityEngine; using System.Collections; public class MainCSharp : MonoBehaviour { GameObject obj; // Use this for initialization void Start () { obj = GameObject.Find ("Cube"); CSharpTest cs = obj.GetComponent<CSharpTest> (); cs.SetInt (11); cs.SetFloat (11.11f); Debug.Log ("C# GetInt "+cs.GetInt()); Debug.Log ("C# GetFloat "+cs.GetFloat ()); } // Update is called once per frame void Update () { } }
1.3、看看结果
结果有点意外:JS应该先执行,为什么出来的顺序是这个?
"Standard Assets"、 "Pro Standard Assets" 和 "Plugins" 这三个目录里的脚本被最先编译,"Editor"目录里的稍后编译,其他的脚本最后编译。
Unity3D笔记 英保通三 脚本编写 、物体间通信,布布扣,bubuko.com
原文:http://www.cnblogs.com/PEPE/p/3590053.html