Exemplo n.º 1
0
        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));
        }
    }