void CompileTypeTest() { _engine.Reset(); //Setup string typeCode = @" public class DynamicType { public void CreateGameObject(){GameObject gob = new GameObject(""DynamicallyCreatedGO"");} } "; _engine.AddUsings("using UnityEngine;"); //Action _engine.CompileType("TestType", typeCode); _engine.CompileCode(@"DynamicType dt = new DynamicType();dt.CreateGameObject();"); _engine.ExecuteLastCompiledCode(); //Assert GameObject go = GameObject.Find("DynamicallyCreatedGO"); Assert.IsTrue(go != null); //TearDown Destroy(go); }
//Remember, you can't compile MonoBehaviours with CSSCriptEngineRemote, stick to //plain C# classes for safety void RemoteCompileType() { CSScriptEngineRemote engineRemote = new CSScriptEngineRemote(); engineRemote.LoadDomain();//Important! engineRemote.AddUsings("using UnityEngine;"); string typeCode = @" public class SimpleType { public void PrintHey() { Debug.Log(""Hey!""); } } "; engineRemote.CompileType("SimpleType", typeCode); engineRemote.CompileCode(@" SimpleType sm = new SimpleType();sm.PrintHey(); "); engineRemote.ExecuteLastCompiledCode(); engineRemote.UnloadDomain();//Important! }
public void OnCompileAndAddTypeButton(CompileTypeEvent ev) { if (!Remote) { _engine.CompileType(ev.TypeID, ev.Code); } else { _engineRemote.CompileType(ev.TypeID, ev.Code); } if (_lastCompilationSucceeded) { EventManager.Instance.QueueEvent(new TypeCompilationSucceededEvent(ev)); } }