如何使用LUA写前端逻辑

相信大家接触LUA大部分都是为了能热更线上的问题,但是有的时候,有些功能,例如一个游戏的活动,在一个大版本中,可能多次的修改。如果把活动相关的逻辑全部使用lua来实现代替c#,后期更新会更方便修改和维护。

下面,我做一个简单的模拟,假设有一个活动界面,我们事先用C#写好了两个活动的展示,如图:

如何使用LUA写前端逻辑_第1张图片

用C#实现,非常的简单,将下面两个类绑定到对应的ActionPanel和ActionItem上,关联好组件即可

如何使用LUA写前端逻辑_第2张图片

public class ActionPanel : MonoBehaviour {

    [SerializeField] Text m_actionText;
    [SerializeField] ActionItem m_actionItem;
    [SerializeField] Transform m_parent;

    void Start () {
        m_actionText.text = "噼里啪啦活动";

        ActionItem item0 = GameObject.Instantiate(m_actionItem) as ActionItem;
        item0.transform.SetParent(m_parent);
        item0.Init(0, "活动1", "活动描述:qweqweqwewqeqweqweqweqwewqewqewqeqweeqwqweqweqwe");

        ActionItem item1 = Instantiate(m_actionItem) as ActionItem;
        item1.transform.SetParent(m_parent);
        item1.Init(1, "活动2", "活动描述:123435243543524352543254352435243523452345342523");
    }
}
public class ActionItem : MonoBehaviour {

    [SerializeField] Text m_titleText;
    [SerializeField] Text m_contentText;
    [SerializeField] Button m_btn;

    int m_index;

    public void Init(int index, string title, string content) {
        m_index = index;
        m_titleText.text = title;
        m_contentText.text = content;
        m_btn.onClick.AddListener(OnClick);

        transform.localPosition = new Vector3(150 + index * 230, 0, 0);
        transform.localScale = Vector3.one;

        gameObject.SetActive(true);
    }

    void OnClick() {
        Debug.Log("index:" + m_index);
    }
}

然后接下来的问题就是,假设在大版本更新之间,策划要下架活动1,新增还未开发的活动3。这个时候,怎么办,下架活动1我们可以事先写好逻辑走配置,但是要新

你可能感兴趣的:(XLua,lua,uinty)