svn repo:http://code.taobao.org/svn/ARPGProject/
项目已开源。
还是不太适合用git,开源项目也没在本机架设服务器,省的机器24小时不关。
这个项目可以做为一个协同项目来做。因为框架把整个游戏都分工的很明确的。
准备先做UI和数据这块,战斗系统到底是是以什么形式去做还没想好。
版本7之前是框架的部署。版本11做了两个界面,一个MainUI和一个settingUI。
整体采用的是UGUI,这个之前是讲过的。
未运行前的框架示意图
运行后的框架示意图
每一个界面都新建一个Canvas,做好适应。
TableDataMgr作为读表的管理类,也作为完成读表后 ,回调显示第一个界面的加载。
AppMgr作为公共属性的管理。譬如在设置里面保存声音的大小。
#region 音乐音效大小
private const string MusicValueKey = "MusicValueKey";
private const string SoundValueKey ="SoundValueKey";
public float MusicValue
{
get
{
return PlayerPrefs.GetFloat(MusicValueKey, 1.0f);
}
set
{
float f = value > 1 ? 1 : value;
f = value < 0 ? 0 : value;
PlayerPrefs.SetFloat(MusicValueKey, f);
}
}
public float SoundValue
{
get
{
return PlayerPrefs.GetFloat(SoundValueKey, 1.0f);
}
set
{
float f = value > 1 ? 1 : value;
f = value < 0 ? 0 : value;
PlayerPrefs.SetFloat(SoundValueKey, f);
}
}
#endregion
然后在去组件的回调函数里面直接去调用。
关于事件的响应机制,这里我是用了EventTrigger,是真的好用。
if (findTrans[i].name.StartsWith("Btn"))
{
EventTrigger btn = findTrans[i].GetComponent();
EventTrigger.Entry ev = new EventTrigger.Entry();
ev.callback.AddListener((BaseEventData arg0) => { OnBtnclick(btn.gameObject); });
ev.eventID = EventTriggerType.PointerClick;
btn.triggers.Add(ev);
}
再次说,炒鸡好用。
这里还要说下遍历子节点的函数,用到了递归。
public static void GetTransformInChild(List listName, Transform tran, ref List trans)
{
if (listName.Contains(tran.name))
{
trans.Add(tran);
}
if (trans.Count == listName.Count)
{
return;
}
for (int i = 0; i < tran.childCount; i++)
{
GetTransformInChild(listName, tran.GetChild(i), ref trans);
}
}
开始在用这个函数的时候惊为天人,我以为会有几十行代码,然而就这么几行做了我想做的事情。点赞。
UI管理的核心是用命令行去管理的,每一帧调用一条命令,可以参见ComUtil这个类。
整个工程文件,自行下载查看。
版本11之前都是只有比较基础的两个界面,以刚接触unity的新手都能做出来,但是,用框架整个管理会让协作开发更便利。
之后会写主界面的一些UI和数据。
可能会更新整体框架的更细节的部分。
2016,展望下未来!