【Lua 第一篇】 Manager + Data 的定义与应用

本文是关于Lua语言的学习笔记,重点介绍了如何定义Manager和Data类,以实现更方便的数据存储和访问。对于刚接触Lua的读者,可能会遇到一些陌生的概念,但通过本文将能理解其基本用法。
摘要由CSDN通过智能技术生成

新接触Lua,有些词语用的生硬,请多理解! 


 定义数据类: 便于存取

-- 引用别的Lua文件 ,下面可以直接调用 比如 functions里的方法 : warn('字符串');
require "Common/functions"
require "System/class"

-- 定义变量  
local json = require "cjson"
local util = require "3rd/cjson.util"

--数据类 :herodata--
HeroData = class("HeroData")

HeroData.__index = HeroData;
local this = HeroData
--shuxing
function HeroData:New(data)
	this.id = data["id"]
	this.name = data["name"]
	return this
end


HeroManager。cs

<span style="color:#ff0000;">using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace SimpleFramework.Manager {

	public class HeroManager : BehaviourBase {

        // Use this for initialization
        void Start() {

        }

		public object[] CallMethod(string func, params object[] args) {
			return Util.CallMethod("HeroManager", func, args);
		}

		public void OnInit( )
		{
			CallMethod("Init");
		} 
    }
}</span>


定义manager。lua类,数据管理类

-- 引用别的Lua文件 ,下面可以直接调用 比如 functions里的方法 : warn('字符串');
require "Logic/hero/HeroData"
require "Common/functions"
require "System/class"

-- 定义变量  
local json = require "cjson"
local util = require "3rd/cjson.util"

--管理器--
HeroManager = {};
local this = HeroManager;

local transform;
local gameObject;

function HeroManager.Awake()
end

function HeroManager.Start()
end

function HeroManager.Init()
	local path = Util.DataPath.."json/Hero.json";
    local text = util.file_load(path);
	LuaHelper.OnJsonCallFunc(text,this.OnJsonCallFunc)-- 读取C#脚本 回调回来OnJsonCallFunc()
    
end

function HeroManager.OnJsonCallFunc(data)
	mTextDatas = {};
	local tempdata = json.decode(data);
	for i,v in ipairs(tempdata) do
		local herodata = HeroData:New(v)
		mTextDatas[herodata.id] = herodata
	end
	
	warn(mTextDatas[13231].name)
end

function HeroManager.OnDestroy()

end


激活Manager  在BehaviourBase.cs 里 


using UnityEngine;
using System.Collections;
using PureMVC.Interfaces;
using SimpleFramework.Manager;

namespace SimpleFramework {

    public class BehaviourBase : MonoBehaviour {
        private AppFacade m_Facade;
        private LuaScriptMgr m_LuaMgr;
        private ResourceManager m_ResMgr;
        private NetworkManager m_NetMgr;
        private MusicManager m_MusicMgr;
        private TimerManager m_TimerMgr;
        private ThreadManager m_ThreadMgr;
	<span style="color:#ff0000;">private HeroManager m_HeroMgr;</span>

        protected AppFacade facade {
            get {
                if (m_Facade == null) {
                    m_Facade = AppFacade.Instance;
                }
                return m_Facade;
            }
        }

        protected LuaScriptMgr LuaManager {
            get {
                if (m_LuaMgr == null) {
                    m_LuaMgr = facade.GetManager<LuaScriptMgr>(ManagerName.Lua);
                }
                return m_LuaMgr;
            }
            set { m_LuaMgr = value; }
        }

        protected ResourceManager ResManager {
            get {
                if (m_ResMgr == null) {
                    m_ResMgr = facade.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值