Skip to content

Bring C# scripting into Unity which acts as native code.

Notifications You must be signed in to change notification settings

pjc0247/UniScript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


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.

About

Bring C# scripting into Unity which acts as native code.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published