private void Start() { DataNodeComponent dataNodeComponent = GameEntry.GetComponent <DataNodeComponent>(); // 使用数据结点组件,直接通过绝对路径获取或设置数据 dataNodeComponent.SetData <VarString>("Player.Name", "Ellan"); string playerName = dataNodeComponent.GetData <VarString>("Player.Name"); Log.Info("Player name is {0}.", playerName); // 使用数据结点组件,通过参照某个数据结点和相对路径获取或设置数据 IDataNode playerNode = dataNodeComponent.GetNode("Player"); dataNodeComponent.SetData <VarInt>("Level", 99, playerNode); int playerLevel = dataNodeComponent.GetData <VarInt>("Level", playerNode); Log.Info("Player level is {0}.", playerLevel.ToString()); // 使用数据结点组件获取数据结点后,通过数据结点的接口进行更多操作。 IDataNode playerExpNode = playerNode.GetOrAddChild("Exp"); playerExpNode.SetData <VarInt>(1000); int playerExp = playerExpNode.GetData <VarInt>(); Log.Info("Player exp is {0}.", playerExp.ToString()); }
static int GetNode(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.DataNodeComponent), typeof(string))) { UnityGameFramework.Runtime.DataNodeComponent obj = (UnityGameFramework.Runtime.DataNodeComponent)ToLua.ToObject(L, 1); string arg0 = ToLua.ToString(L, 2); GameFramework.DataNode.IDataNode o = obj.GetNode(arg0); ToLua.PushObject(L, o); return(1); } else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.DataNodeComponent), typeof(string), typeof(GameFramework.DataNode.IDataNode))) { UnityGameFramework.Runtime.DataNodeComponent obj = (UnityGameFramework.Runtime.DataNodeComponent)ToLua.ToObject(L, 1); string arg0 = ToLua.ToString(L, 2); GameFramework.DataNode.IDataNode arg1 = (GameFramework.DataNode.IDataNode)ToLua.ToObject(L, 3); GameFramework.DataNode.IDataNode o = obj.GetNode(arg0, arg1); ToLua.PushObject(L, o); return(1); } else { return(LuaDLL.luaL_throw(L, "invalid arguments to method: UnityGameFramework.Runtime.DataNodeComponent.GetNode")); } } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }