Quill is just a small wrapper based on pure UnityUI. You can create UI by using its c# api, programmatically.
Quill also comes with lua api support(experimental). That means you can run lua code from StreamingAssets
and make ui in unity.
var label = Quill.CreateLabel("hello world");
label.element.SetSize(100, 30);
label.element.SetPosition(100, 100);
var button = Quill.CreateButton("hello button!");
button.onClick.AddListener(SomeMethod);
button.interactable = false;
var panelParent = Quill.CreateEmpty();
panelParent.SetSize(300, 80);
var box = Quill.CreateBox(Color.red);
var label = Quill.CreateLabel("Score: ");
label.alignment = TextAnchor.MiddleCenter;
label.fontSize = 32;
panelParent.Add(box);
panelParent.Add(label);
label.element.StretchToParentContainer();
box.element.StretchToParentContainer();
To enable lua feature, initialize and update the api like below.
Quill will look into StreamingAssets/LUA
directory for main.lua
file.
private void Start()
{
Quill.Init();
QuillLua.Run();
}
private void Update()
{
QuillLua.Update();
}
private void OnDestroy()
{
QuillLua.Exit();
}
Here is the structure of the StreamingAssets/LUA/main.lua
function OnInit()
end
function OnUpdate(dt)
end
function OnExit()
end
local timePassed = 0
local timeLabel = nil
function OnInit()
local root = quill.empty()
color = {}
color.r = 0.4
color.g = 0.8
color.b = 0.3
local box = quill.box()
box:setColor(color.r, color.g, color.b)
box:setSize(300, 100)
root:addChild(box)
timeLabel = quill.label("time")
timeLabel:setSize(300, 100)
root:addChild(timeLabel)
end
function OnUpdate(dt)
timePassed = timePassed + dt
timeLabel:setText("time: " .. string.format("%.2f", timePassed))
end
Here is the first devlog: introduction to quill