开发日志-5.5
天气炎热,心浮气躁,开发进展缓慢。
........... * * *...................... * * *....................................
滚屏:
首先来整理一下,看看物体是怎么添加到场景里面的。
1) UserControl ----> MainCanvas : 这是显示的根。向游戏Game实体发送CLSINIT消息,同时传入参数初始化游戏实体,
EntitiesManager.EntSendMessage(gameEnt, EM.EM_CLSINIT, new GameTemplate(this, LayoutRoot, 1000, 600), null); 在这个过程中,显示的根被传给了Game这个类的静态字段,同时还有长宽等,注意,这个类并不是实体,而是实体的逻辑,是用来处理各种消息的。不过在这里,保存一些数据也算是额外的工作吧,当然,或许有更好的结构,不过目前是这样做的。
2)有了游戏实体还是不够的,我们在游戏实体的基础上添加了场景实体,众多的场景实体存储在一个List<Entity>里面Game.scenes。在创建场景实体的时候,把根RootCanvas,也就是Game.MainCanvas,和一个整数传给了Scene类的Init(...)方法来初始化。在场景实体里存储着SceneTemplate这样的一个数据模板,Root 相当于 Game.MainCanvas,在Root这个Canvas里添加了一个Contain Canvas,同时根据传入的整数,创建了一个Canvas数组,并把每一个数组里的每一个Canvas添加到Contain里面。
UserControl--->MainCanvas(LayourRoot)(Game.MainCanvas)(Scene.Root)--->Scene.Contain--->Layer[Canvas]
这样构成了游戏的显示基础,而且可以通过((SceneTemplate)_ent.parent.data).Layers[1].Children.Add(_ent.renderFrame)这样的方式找到所要添加的Canvas,比如这句把游戏人物添加到了Contain层里的数组里的索引为1的Canvas上面。