相信大家接触LUA大部分都是为了能热更线上的问题,但是有的时候,有些功能,例如一个游戏的活动,在一个大版本中,可能多次的修改。如果把活动相关的逻辑全部使用lua来实现代替c#,后期更新会更方便修改和维护。
下面,我做一个简单的模拟,假设有一个活动界面,我们事先用C#写好了两个活动的展示,如图:
用C#实现,非常的简单,将下面两个类绑定到对应的ActionPanel和ActionItem上,关联好组件即可
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我们可以事先写好逻辑走配置,但是要新增