Esempio n. 1
0
    //这个函数展示了先从外部向env赋值,再做计算
    void Eval2()
    {
        CQuarkBlock block = new CQuarkBlock();

        block.SetValue("HP1", 200);
        block.SetValue("HP2", 300);
        double d = (double)block.Execute("HP1 + HP2 * 0.5");

        Debug.Log("d = " + d);
        float f = (float)block.Execute("HP1 + HP2 * 0.5f");

        Debug.Log("f = " + f);
    }
Esempio n. 2
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(0, 0, 200, 50), "Eval use String"))
        {
            string callExpr = "ScriptClass4 sc =new ScriptClass4();\n" +
                              "sc.defHP1=100;\n" +
                              "sc.defHP2=200;\n" +
                              "return sc.GetHP();";
            object i = block.Execute(callExpr);
            result = "result=" + i;
        }

        if (GUI.Button(new Rect(200, 0, 200, 50), "Eval use Code"))
        {
            //得到脚本类型
            var typeOfScript = CQuark.AppDomain.GetTypeByKeyword("ScriptClass4");

            CQuark.CQ_Content content = new CQuark.CQ_Content();
            //调用脚本类构造创造一个实例
            var thisOfScript = typeOfScript._class.New(content, null).value;
            //调用脚本类成员变量赋值
            //Debug.LogWarning(thisOfScript+","+ typeOfScript+","+ typeOfScript.function);
            typeOfScript._class.MemberValueSet(content, thisOfScript, "defHP1", 200);
            typeOfScript._class.MemberValueSet(content, thisOfScript, "defHP2", 300);
            //调用脚本类成员函数
            var    returnvalue = typeOfScript._class.MemberCall(content, thisOfScript, "GetHP", null);
            object i           = returnvalue.value;
            result = "result=" + i;
        }

        GUI.Label(new Rect(0, 50, 200, 50), result);
    }
Esempio n. 3
0
    //这个函数展示最简单的计算
    void Eval1()
    {
        CQuarkBlock block = new CQuarkBlock();
        int         ret   = (int)block.Execute("1+2");

        Debug.Log("return = " + ret);
    }
Esempio n. 4
0
    // 这个函数展示了如何执行一个文件(作为函数块)
    void ExecuteFile()
    {
        CQuarkBlock block = new CQuarkBlock();

        string text = LoadMgr.LoadFromStreaming(m_blockFilePath);
        object obj  = block.Execute(text);

        Debug.Log("result = " + obj);
    }
Esempio n. 5
0
    //这个函数展示了执行一个函数块,且函数块再调用一个方法
    void Execute2()
    {
        CQuarkBlock block = new CQuarkBlock();
        int         ret   = (int)block.Execute(
            "Debug.Log(\"Today is \" + Today());\n" +
            "return Today();");

        Debug.Log("return = " + ret);
    }
Esempio n. 6
0
    //这个函数展示了执行一个函数块,且函数块再调用Unity的Debug类
    void Execute1()
    {
        CQuarkBlock block = new CQuarkBlock();

        block.Execute(
            "int a = 2;\n" +
            "if(a == 0)\n" +
            "Debug.Log(\"a is zero!\");\n" +
            "else\n" +
            "Debug.Log(\"a is not zero!\");");
    }
Esempio n. 7
0
    //这个函数展示了执行一个函数块
    void ExecuteBlock()
    {
        string method =
            "string ret = \"\";\n" +
            "for(int i = 0; i < 10; i++){\n" +
            "ret = ret + i;\n" +
            "};\n" +
            "return ret";
        CQuarkBlock block = new CQuarkBlock();
        string      s     = (string)block.Execute(method);

        Debug.Log(s);
    }