You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.6 KiB
61 lines
2.6 KiB
8 years ago
|
# Fungus Module {#lua_fungus_module}
|
||
|
|
||
|
This Lua module provides handy functions for working with Lua, Unity and Fungus.
|
||
|
|
||
|
In this page we cover some of the more generic functionality in the module, other major features are described elsewhere in the documentation.
|
||
|
|
||
|
# Inspecting Lua objects
|
||
|
|
||
|
You can use Lua's built in print() function to get a basic description of any object printed to the console. When you want to get a more detailed description of an object, use inspect().
|
||
|
|
||
|
```lua
|
||
|
-- Prints a short description of object v
|
||
|
print(v)
|
||
|
|
||
|
-- Prints a summary of object v in a human readable format.
|
||
|
inspect(v)
|
||
|
```
|
||
|
|
||
|
# Running Unity coroutines
|
||
|
|
||
|
When you bind to a C# component using Lua Bindings, you can access any public method in the class. If a method returns IEnumerator then that method can be executed [as a coroutine](http://docs.unity3d.com/Manual/Coroutines.html), which is a powerful way to run asynchronous code.
|
||
|
|
||
|
The runwait() function allows you to call a C# coroutine method from Lua which may take multiple frames to finish its work, and then carry on with the rest of the Lua code once that C# method has finished executing. This is how the say() function works for example.
|
||
|
|
||
|
This is the list of available functions for waiting and working with coroutines.
|
||
|
|
||
|
|
||
|
```lua
|
||
|
-- Waits for a number of seconds, then continue execution of Lua script
|
||
|
wait(duration)
|
||
|
|
||
|
-- Waits until the Lua function provided returns true, or the timeout expires.
|
||
|
-- Returns true if the function succeeded, or false if the timeout expired
|
||
|
waitfor(fn, timeoutduration)
|
||
|
|
||
|
-- Run a C# coroutine and continue execution of Lua script
|
||
|
run(co)
|
||
|
|
||
|
-- Run a C# coroutine, wait until it completes, then continue execution of Lua script
|
||
|
runwait(co)
|
||
|
```
|
||
|
|
||
|
# Globals vs Table mode
|
||
|
|
||
|
The Fungus module can be used in three modes, controlled by the Fungus Module option in the LuaUtils component.
|
||
|
|
||
|
1. Use Global Variables: all module functions are mapped to global functions. This allows for convenient access, but it runs the risk that you might accidentally declare a variable with the same name as a Fungus module function.
|
||
|
2. Use Fungus Variable: all module functions are accessed through a global table called 'fungus'. This gives a degree of namespace safety at the cost of more typing.
|
||
|
3. No Fungus Module: the Fungus module will not be registered. Used if you don't want to use the Fungus module.
|
||
|
|
||
|
Options 1 and 2 are functionaly equivalent, it's just a matter of personal preference which you want to use.
|
||
|
|
||
|
```lua
|
||
|
-- sub is a function in the Fungus module, mapped to a global variable
|
||
|
|
||
|
-- Use Global Variables
|
||
|
sub('a string')
|
||
|
|
||
|
-- Use Fungus Variable
|
||
|
fungus.sub('a string')
|
||
|
```
|