public void TimerTest3() { var jsEnv = new JsEnv(new TxtLoader()); jsEnv.Eval(@" const CS = require('csharp'); let obj = CS.Puerts.UnitTest.Timer; let i = 0; let id = setInterval(()=>{obj.TimerTest3Num = ++i;},500); setTimeout(()=>{clearInterval(id);},2000); setTimeout(()=>{clearInterval(id);},2500); "); for (int i = 0; i < 100; i++) { if (i < 20) { Assert.AreEqual(i / 5, TimerTest3Num); } else { Assert.AreEqual(20 / 5, TimerTest3Num); } jsEnv.Tick(); } Assert.AreEqual(20 / 5, TimerTest3Num); jsEnv.Dispose(); }
private void Update() { if (jsEnv != null) { jsEnv.Tick(); } }
public void SetTimeoutTest() { SetTimeoutTestNum = 0; var jsEnv = new JsEnv(new TxtLoader()); jsEnv.Eval(@" const CS = require('csharp'); let obj = CS.Puerts.UnitTest.Timer; let i = 0; setTimeout(()=>{obj.SetTimeoutTestNum = ++i;},4000); "); for (int i = 0; i < 100; i++) { if (i == 38) { Assert.AreEqual(0, SetTimeoutTestNum); } if (i == 40) { Assert.AreEqual(1, SetTimeoutTestNum); } jsEnv.Tick(); } Assert.AreEqual(1, SetTimeoutTestNum); jsEnv.Dispose(); }
public void SetIntervalTest2() { var jsEnv = new JsEnv(new TxtLoader()); var timer = jsEnv.Eval <Timer>(@" const CS = require('csharp'); let timer = new CS.Puerts.UnitTest.Timer(Date.now()); Date.now = ()=>timer.Now(); let obj = CS.Puerts.UnitTest.TimerTest; let i = 0; let j = 0; setInterval(()=>{obj.SetInterval2TestNum1 = ++i;},1000); setInterval(()=>{obj.SetIntervalTestNum2 = ++j;},500); timer; "); for (int i = 0; i < 100; i++) { Assert.AreEqual(i / 10, SetInterval2TestNum1); Assert.AreEqual(i / 5, SetIntervalTestNum2); timer.Tick(); jsEnv.Tick(); } jsEnv.Dispose(); }
public void TimerTest2() { var jsEnv = new JsEnv(new TxtLoader()); var timer = jsEnv.Eval <Timer>(@" const CS = require('csharp'); let timer = new CS.Puerts.UnitTest.Timer(Date.now()); Date.now = ()=>timer.Now(); let obj = CS.Puerts.UnitTest.TimerTest; let i = 0; let id = setInterval(()=>{obj.TimerTest2Num = ++i;},500); setTimeout(()=>{clearInterval(id);},2100); timer; "); for (int i = 0; i < 100; i++) { if (i <= 20) { Assert.AreEqual(i / 5, TimerTest2Num); } else { Assert.AreEqual(20 / 5, TimerTest2Num); } timer.Tick(); jsEnv.Tick(); } jsEnv.Dispose(); }
private void Update() { if (jsEnv != null) { jsEnv.Tick(); if (gameStarted) { #if UNITY_EDITOR var start = sw.ElapsedMilliseconds; #endif try { JsUpdate?.Invoke(Time.deltaTime, Time.unscaledDeltaTime); } catch (Exception ex) { Logger.LogError("luaUpdate err : " + ex.Message + "\n" + ex.StackTrace); } #if UNITY_EDITOR updateElapsedMilliseconds = sw.ElapsedMilliseconds - start; #endif } } }
// Update is called once per frame void Update() { if (env != null) { env.Tick(); } }
void Update() { if (JsUpdate != null) { JsUpdate(); } jsEnv.Tick(); }
//private byte[] LoadLuaFiles(ref string fileName) //{ // if(m_CustomLoadHandlerManager.TryGetHandler(fileName,out var handler)) //自定义加载 // { // return handler?.Invoke(); // } // LuaRequireToPath(ref fileName); // //使用同步接口加载资源 // try // { // var ta = m_Assets.Load<TextAsset>(fileName); // byte[] code = ta.bytes; // m_Assets.Release(ta); // return code; // } // catch // { // Debug.LogWarning("Load Lua file failed: " + fileName); // return null; // } //} //private async Task InitInternalEntry() //{ // try // { // string final_path = c_InternalJsEntryPath; // LuaRequireToPath(ref final_path); // TextAsset ta = await m_Assets.LoadAsync<TextAsset>(final_path); // object[] obj_result = m_JsEnv.DoString(ta.bytes, final_path); // LuaTable table = (LuaTable)obj_result[0]; // List<string> init_list = table.Cast<List<string>>(); // List<Task> list_task = new List<Task>(); // foreach (var item in init_list) // { // list_task.Add(require_init_file(item)); // } // await Task.WhenAll(list_task); // m_Assets.Release(ta); // } // catch(XException e) // { // throw e; // } // catch(Exception e) // { // Debug.LogException(e); // } //} //private async Task require_init_file(string req_str) //{ // string final_path = req_str; // LuaRequireToPath(ref final_path); // TextAsset ta = await m_Assets.LoadAsync<TextAsset>(final_path); // m_JsEnv.DoString(ta.bytes, final_path); // m_Assets.Release(ta); //} private void OnUpdate() { if (Time.time - m_lastGCTime > m_GCInterval) { m_JsEnv.Tick(); m_lastGCTime = Time.time; } }
private void Update() { if (jsEnv != null) { jsEnv.Tick(); } JsOnUpdate?.Invoke(); }
private static void Update() { if (env != null) { env.Tick(); if (DisposeInNextFrame) { env.Dispose(); env = null; DisposeInNextFrame = false; } } }
public void SetIntervalTest() { SetIntervalTestNum = 0; var jsEnv = new JsEnv(new TxtLoader()); jsEnv.Eval(@" const CS = require('csharp'); let obj = CS.Puerts.UnitTest.Timer; let i = 0; setInterval(()=>{obj.SetIntervalTestNum = ++i;},1000); "); for (int i = 0; i < 100; i++) { Assert.AreEqual(i / 10, SetIntervalTestNum); jsEnv.Tick(); } jsEnv.Dispose(); }
public void DelegateGC() { var jsEnv = new JsEnv(new TxtLoader()); jsEnv.Eval(@" const CS = require('csharp'); let obj = new CS.Puerts.UnitTest.BaseClass(); obj.ActionParam(Math.floor); "); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); jsEnv.Eval(@" obj.ActionParam(Math.floor); "); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); jsEnv.Tick(); jsEnv.Dispose(); }
public void TimerTest4() { var jsEnv = new JsEnv(new TxtLoader()); jsEnv.Eval(@" const CS = require('csharp'); let timer = new CS.Puerts.UnitTest.Timer(); Date.now = ()=>timer.Now(); let obj = CS.Puerts.UnitTest.TimerTest; let i = 0; let id = setInterval(()=>{obj.TimerTest4Num = ++i;},500); setTimeout(()=>{clearInterval(id);},200); "); for (int i = 0; i < 100; i++) { Assert.AreEqual(0, TimerTest4Num); jsEnv.Tick(); } jsEnv.Dispose(); }
private void Update() { jsEnv.Tick(); }
void Update() { JsEnv.Tick(); }