Skip to content

Latest commit

 

History

History
82 lines (70 loc) · 2.22 KB

README.md

File metadata and controls

82 lines (70 loc) · 2.22 KB


Brings C# scripting into Unity which acts as native code.
Documentation / Web Playground

Overview

var src = @"
class PlayerMovement : MonoBehaviour {
    public void MoveForward() {
        transform.position += new Vector3(0, 0, 1);
    }
}
";

var script = CScript.CreateRunner(src);

dynamic move = script
    .Override("PlayerMovement", this)
    .AsDynamic();
move.MoveForward();

Yet Another C# Scripting Engine

Other C# scripts use mcs or roslyn. They're all compiler based not an interpreter
however UniScript uses a SlowSharp as a backend
which enables....

  • Sandboxing : Can prevent malicious call with Whitelist, Blacklist or your own rules.
  • Fully compatible with iOS, WebAssembly and WSA : iOS is a huge market you can't abandon.
  • Execution timeout to prevent infinite loops : More safety on user created mods!

Supports Unity's native messages

Unity messages will be fired automatically, same as Native C#.

class MoveForward : UniScriptBehaviour { 
    public void Update() {
        transform.position += new Vector3(0, 0, 1);
    }
    public void OnEnable() { }
    public void OnDisable() { }
}

One only difference is all callbacks should be declared as public.

True Hot Reloading

Allows you to replace methods after parsing. This also affects already instantiated objects.

var r = CScript.CreateRunner(@"
class Foo { public int GiveMeNumber() => 10; }
");

var foo = r.Instantiate("Foo");
// should be 10
foo.Invoke("GiveMeNumber");
ss.UpdateMethodsOnly(@"
class Foo { public int GiveMeNumber() => 20; }
");
// should be 20
foo.Invoke("GiveMeNumber");

Runtime Debugging

LICENSE

It doesn't have clear license at this moment, becuase this is very early stage of development and I'm not yet determined to sell this product or not.
So just keep below lines.

  • Non-Commercial/Commercial use are allowed.
  • Sourcecode redistribution with chainging its name is not allowed.

However, SlowSharp has its own license and you may publish code with some modifications.