Example #1
0
    //这个函数展示最简单的计算
    void Eval1()
    {
        CQuarkParagraph block = new CQuarkParagraph();

        CQuark.CQ_Value ret = block.Execute("1+2");
        Debug.Log("return = " + ret);
    }
Example #2
0
    //这个函数展示了先从外部向env赋值,再做计算
    void Eval2()
    {
        CQuarkParagraph block = new CQuarkParagraph();

        block.SetValue("HP1", 200);
        block.SetValue("HP2", 300);
        CQuark.CQ_Value d = block.Execute("HP1 + HP2 * 0.5");
        Debug.Log("d = " + d);
        CQuark.CQ_Value f = block.Execute("HP1 + HP2 * 0.5f");
        Debug.Log("f = " + f);
    }
Example #3
0
    //这个函数展示了执行一个函数块,且函数块再调用Unity的Debug类
    void Execute1()
    {
        CQuarkParagraph block = new CQuarkParagraph();

        block.Execute(
            "int a = 2;\n" +
            "if(a == 0)\n" +
            "UnityEngine.Debug.Log(\"a is zero!\");\n" +
            "else\n" +
            "UnityEngine.Debug.Log(\"a is not zero!\");");
    }
Example #4
0
    // 这个函数展示了如何执行一个文件(作为函数块)
    void ExecuteFile()
    {
        CQuarkParagraph block = new CQuarkParagraph();

        block.SetValue("HP1", 200);
        block.SetValue("HP2", 300);

        string text = LoadMgr.LoadFromStreaming(m_blockFilePath);

        CQuark.CQ_Value obj = block.Execute(text);
        Debug.Log("result = " + obj);
    }
Example #5
0
    //这个函数展示了执行一个函数块
    void ExecuteBlock()
    {
        string method =
            "string ret = \"\";\n" +
            "for(int i = 0; i < 10; i++){\n" +
            "ret = ret + i;\n" +
            "};\n" +
            "return ret";
        CQuarkParagraph block = new CQuarkParagraph();

        CQuark.CQ_Value s = block.Execute(method);
        Debug.Log(s);
    }
Example #6
0
    //这个函数展示了执行一个函数块,且函数块再调用一个方法
    void Execute2()
    {
        CQuarkParagraph block = new CQuarkParagraph();

        CQuark.CQ_Value ret = block.Execute(
//			"UnityEngine.Debug.Log(\"V\" + (UnityEngine.Vector3.up + UnityEngine.Vector3.back));\n" +
//			"UnityEngine.Debug.Log(UnityEngine.Vector3.up.ToString());\n" +
            //TODO 括号的识别有问题
            "UnityEngine.Debug.Log((UnityEngine.Vector3.up + UnityEngine.Vector3.back).ToString());\n" +
            "UnityEngine.Debug.Log(\"Today is \" + Demo2.Today());\n" +
            "return Demo2.Today();");
//			"Debug.Log(\"V\" + (Vector3.up + Vector3.back));\n" +
//			"Debug.Log(\"Today is \" + Demo2.Today());\n" +
//			"return Demo2.Today();");
        Debug.Log("return = " + ret);
    }
Example #7
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();";
            CQuarkParagraph block = new CQuarkParagraph();
            CQuark.CQ_Value i     = block.Execute(callExpr);
            result = "result=" + i;
        }

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

            CQuark.CQ_Content content = new CQuark.CQ_Content();
            //调用脚本类构造创造一个实例
            var thisOfScript = typeOfScript._class.New(content, new CQuark.CQ_Value[0]).GetObject();

            //调用脚本类成员变量赋值
            //Debug.LogWarning(thisOfScript+","+ typeOfScript+","+ typeOfScript.function);
            CQuark.CQ_Value v1 = new CQuark.CQ_Value();
            v1.SetNumber(typeof(int), 150);
            CQuark.CQ_Value v2 = new CQuark.CQ_Value();
            v2.SetNumber(typeof(int), 300);
            typeOfScript._class.MemberValueSet(content, thisOfScript, "defHP1", v1);
            typeOfScript._class.MemberValueSet(content, thisOfScript, "defHP2", v2);
            //调用脚本类成员函数
            var returnvalue = typeOfScript._class.MemberCall(content, thisOfScript, "GetHP", new CQuark.CQ_Value[0]);
            result = "result=" + returnvalue;
        }

        GUI.Label(new Rect(0, 50, 200, 50), result);
    }