• unity3D中C#和JS互相访问


    方法01

    ------------------------JS访问C#的变量-----------------------------

    JS脚本:

    import System.Reflection; 
    var ee = 0;
    var ddf:GameObject;
    function OnGUI () 
    {
    var targetController1:Component= ddf.GetComponent("ctrl");
    var fieldInfo: FieldInfo=targetController1.GetType().GetField("csvalue");

    if(GUI.Button(Rect(100,100,100,100),"Call"))
    {
    ee=fieldInfo.GetValue(targetController1); 
    print(ee.ToString());
    }
    }

     

    C#脚本:

    using UnityEngine;
    using System.Collections;

    public class ctrl : MonoBehaviour 
    {
    public int csvalue = 100;
    void Start () 
    {
    }

    void Update () 
    {

    }
    }

    -----------------------c#访问JS变量------------------------

    c#代码:

    using UnityEngine;
    using System.Collections;
    using System;
    using System.Reflection;

    public class CtoJS : MonoBehaviour {

    public GameObject tt;
    public String moneycount;
    public String boncount;
    // Use this for initialization
    void Start () 
    {
    Component AComponent = tt.GetComponent("CllisionsSomeThing");
    FieldInfo fieldInfo = AComponent.GetType().GetField("MC");
    FieldInfo fieldInfo1 = AComponent.GetType().GetField("BomCount"); 
    moneycount = fieldInfo.GetValue(AComponent).ToString();
    boncount= fieldInfo1.GetValue(AComponent).ToString();

    print(moneycount);
    print(boncount);
    }

    void Update () 
    {
    }
    }

     

    js代码:

    #pragma strict

    var MC = "sdfsdfs";
    var BomCount = 1000;

    function Start () {

    }

    function Update () {

    }

    -------------------------------------------------------------------------------------------------

    方法02

     

    兩個文件 test1.js 和 test2.cs

    test1.js

    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    -->function OnGUI()

    if(GUI.Button(Rect(25,25,100,30),"JS Call CS" ))
    { var c = gameObject.GetComponent("test2");
    c.PrintTest();
    }
    }

    function testPrint() { print("CS Call JS");
    }

     

    test2.cs

    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    -->using UnityEngine;
    using System.Collections;

    public class test2: MonoBehaviour {

    void OnGUI()
    {
    if(GUI.Button(new Rect(25,70,100,30), "CS Call JS"))
    {
    test1 c = (test1)gameObject.GetComponent("test1");
    c.testPrint();
    }
    }

    void PrintTest() {
    print("JS Call CS");
    }
    }

  • 相关阅读:
    移动桌面文件
    软件项目经理素质能力的必备要求
    如何管理时间
    《明日歌》
    浏览网页出现iexplore.exe应用程序错误为:"0x03e620b0"指令引用的"0x00000000"内存.该内存不能为"read"?
    css网站布局学习笔记
    因为爱,人生除了理智,还有情感!
    35岁之前成功的12条黄金法则
    VS2005中没有DataGrid控件的解决方案
    先装VS2005再装IIS,出现访问IIS元数据库失败解决方案
  • 原文地址:https://www.cnblogs.com/FLWL/p/3655652.html
Copyright © 2020-2023  润新知