diff --git a/Assets/Fungus/Lua/Scripts/LuaUtils.cs b/Assets/Fungus/Lua/Scripts/LuaUtils.cs
index 5205230d..9daf444e 100644
--- a/Assets/Fungus/Lua/Scripts/LuaUtils.cs
+++ b/Assets/Fungus/Lua/Scripts/LuaUtils.cs
@@ -342,6 +342,23 @@ namespace Fungus
{
GameObject.Destroy(go);
}
+
+ ///
+ /// Spawns an instance of a named prefab resource.
+ /// The prefab must exist in a Resources folder in the project.
+ ///
+ public virtual GameObject Spawn(string resourceName)
+ {
+ // Auto spawn a say dialog object from the prefab
+ GameObject prefab = Resources.Load(resourceName);
+ if (prefab != null)
+ {
+ GameObject go = Instantiate(prefab) as GameObject;
+ go.name = resourceName;
+ return go;
+ }
+ return null;
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Tests/Lua/LuaEnvironmentTests.unity b/Assets/Tests/Lua/LuaEnvironmentTests.unity
index 11c6857a..af63dbab 100644
--- a/Assets/Tests/Lua/LuaEnvironmentTests.unity
+++ b/Assets/Tests/Lua/LuaEnvironmentTests.unity
@@ -814,7 +814,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1537199682}
- m_RootOrder: 3
+ m_RootOrder: 2
--- !u!1 &1052730009
GameObject:
m_ObjectHideFlags: 0
@@ -1245,65 +1245,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
---- !u!1 &1436236943
-GameObject:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 178698, guid: e0c2b90c058ff43f4a56a266d4fa721b, type: 2}
- m_PrefabInternal: {fileID: 0}
- serializedVersion: 4
- m_Component:
- - 4: {fileID: 1436236944}
- - 114: {fileID: 1436236945}
- m_Layer: 0
- m_Name: LuaBindings
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1436236944
-Transform:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 403334, guid: e0c2b90c058ff43f4a56a266d4fa721b, type: 2}
- m_PrefabInternal: {fileID: 0}
- m_GameObject: {fileID: 1436236943}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1537199682}
- m_RootOrder: 2
---- !u!114 &1436236945
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 11414792, guid: e0c2b90c058ff43f4a56a266d4fa721b,
- type: 2}
- m_PrefabInternal: {fileID: 0}
- m_GameObject: {fileID: 1436236943}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4cc8a659e950044b69d7c62696c36962, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- tableName:
- registerTypes: 1
- boundTypes:
- - UnityEngine.GameObject, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
- - UnityEngine.PrimitiveType, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
- - UnityEngine.Component, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
- - System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- - System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- - System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- - UnityEngine.SendMessageOptions, UnityEngine, Version=0.0.0.0, Culture=neutral,
- PublicKeyToken=null
- - UnityEngine.SceneManagement.Scene, UnityEngine, Version=0.0.0.0, Culture=neutral,
- PublicKeyToken=null
- - UnityEngine.Object, UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
- - System.Single, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- boundObjects:
- - key: testgameobject
- obj: {fileID: 804588883}
- component: {fileID: 0}
--- !u!1 &1463630762
GameObject:
m_ObjectHideFlags: 0
@@ -1479,7 +1420,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!114 &1537199681
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -1513,7 +1454,6 @@ Transform:
m_Children:
- {fileID: 550607924}
- {fileID: 1932132174}
- - {fileID: 1436236944}
- {fileID: 804588884}
m_Father: {fileID: 0}
m_RootOrder: 12
@@ -1829,8 +1769,7 @@ MonoBehaviour:
width: 1114
height: 859
selectedBlock: {fileID: 1828947834}
- selectedCommands:
- - {fileID: 1828947833}
+ selectedCommands: []
variables: []
description: "Check if the LuaStore prime table is created \nand registered as fungus.store,
and if we can write and read values to it."
@@ -2072,7 +2011,7 @@ MonoBehaviour:
executeMethods: 2
luaEnvironment: {fileID: 0}
luaFile: {fileID: 0}
- luaScript: '-- Test cloning and renaming a game object
+ luaScript: '-- Test GameObject methods like find, instantiate, spawn, etc.
testgo = unity.luautils.find("TestGameObject")
@@ -2093,6 +2032,16 @@ MonoBehaviour:
unity.luautils.destroy(go)
+ -- Spawn an object from a prefab in a Resources folder
+
+ saydialog = unity.luautils.spawn("SayDialog")
+
+ fungus.assert(saydialog != nil)
+
+
+ unity.luautils.destroy(saydialog)
+
+
fungus.pass()'
runAsCoroutine: 1
useFungusModule: 1