This project is possible because of the effort of amazing people at Cranium Software this project is based of SmartConsole https://github.com/CraniumSoftware/SmartConsole
BeastConsole is evolution (hopefully) of SmartConsole,
- Backend is created by folks at CraniumSoftware.
- Use attributes to bind members
- Register your own arbitrary commands/methods for any object(non monob as well) and provide parameters
- Autocomplete
- Both commands and variables support any number of subscribers, modify all objects at once.
- Multiline
- Suggestions
- History
- ConsoleUtility class containing methods to draw tables. (You can actually use ConsoleUtility pretty much by itself instead of Console class).
setup: Drop Console prefab in scene, change parameters to your liking.
Attributes:
Console uses reflection to find attributes, to speed up the whole process we should mark any class that has uses console
attributes with [ConsoleParse] attribute.
[ConsoleParse] public class AttributeTest : MonoBehaviour { [ConsoleVariable("testvar", "")] public float TestVariable = 5f; [ConsoleVariable("testproperty", "")] public bool TestPropertyVariable { set { Console.WriteLine("testproperty was set to: " + value); } } [ConsoleCommand("testMethod", "")] void TestMethod() { BeastConsole.Console.WriteLine("test method works"); } [ConsoleCommand("testMethodWithParams", "")] public void TestMethodWithParams(float param1) { BeastConsole.Console.WriteLine("works :" + param1.ToString()); } [ConsoleCommand("testMethodWith2Params", "")] public void TestMethodWith2Params(float param1, int param2) { BeastConsole.Console.WriteLine("works :" + (param1+ param2).ToString()); } }
Manual:
public float Volume = 1f; Console.RegisterVariable<float>("Volume", "", x => Volume = x, this); Console.RegisterCommand("MoveUp", "", this, MoveUp); private void MoveUp(string[] val) { transform.position += new Vector3(0, System.Convert.ToSingle(val[1]) , 0); }
Manual method requires you to unregister commands and variables when done with an object.
See Example folder for more examples.