//这个函数展示了先从外部向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); }
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); }
//这个函数展示最简单的计算 void Eval1() { CQuarkBlock block = new CQuarkBlock(); int ret = (int)block.Execute("1+2"); Debug.Log("return = " + ret); }
// 这个函数展示了如何执行一个文件(作为函数块) void ExecuteFile() { CQuarkBlock block = new CQuarkBlock(); string text = LoadMgr.LoadFromStreaming(m_blockFilePath); object obj = block.Execute(text); Debug.Log("result = " + obj); }
//这个函数展示了执行一个函数块,且函数块再调用一个方法 void Execute2() { CQuarkBlock block = new CQuarkBlock(); int ret = (int)block.Execute( "Debug.Log(\"Today is \" + Today());\n" + "return Today();"); Debug.Log("return = " + ret); }
//这个函数展示了执行一个函数块,且函数块再调用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!\");"); }
//这个函数展示了执行一个函数块 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); }