Beispiel #1
0
    //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!
    }
    void OnDisable()
    {
        _engine.RemoveOnCompilationFailedHandler(OnCompilationFailedAction);
        _engine.RemoveOnCompilationSucceededHandler(OnCompilationSucceededAction);

        _engine.UnloadDomain();
    }
 void Update()
 {
     if (Remote)
     {
         if (_engineRemote.RemoteDomain == null)
         {
             _engineRemote.LoadDomain("RemoteDomain");
             _engineRemote.AddUsings("using WhitelistAPI;");
             _engineRemote.AddUsings("using UnityEngine;");
             _engineRemote.AddUsings("using System;");
         }
         if (!GameObjectWatcher.Initialized)
         {
             GameObjectWatcher.Initialize();
         }
     }
     else
     if (_engineRemote.RemoteDomain != null)
     {
         GameObjectWatcher.DestroyAllDynamicGOs();
         if (!ResetSceneOnExecute)
         {
             GameObjectWatcher.Disable();
         }
         _engineRemote.UnloadDomain();
     }
     if (ResetSceneOnExecute)
     {
         if (!GameObjectWatcher.Initialized)
         {
             GameObjectWatcher.Initialize();
         }
     }
     else
     {
         if (GameObjectWatcher.Initialized)
         {
             GameObjectWatcher.Disable();
         }
     }
 }