我们公司用delphi做游戏的,我看了部分代码~
整个太陈旧了,GUI部分竟然全部都是代码完成的~
没有使用分离的概念!这样不管是从维护还是UI涉及调整来说都太麻烦了,不可能只是改动两个贴图坐标就要跟新一个执行文件。我想写一个UI编辑器,但是由于项目后期了,不可能整体全改~
所以我要写一个兼容的。我的想法是,使用ini文件来做控件需要加载的资源和显示位置,这样的话可以通过读取ini控件类型,编辑器也只是提供对控件可视部分的编辑,具体的功能部分还是在代码。动态生成的时候就查询ini文件中写明的对象类型然后生产一个该类型对象,之后再通过给定的参数做初始化,这样改动和布局都会比较简单~
但是有个问题,一个类不可能只有一个控件,里面可能有很多其他的对象,额且这些对象可能也包含有对象,这样要设置的话需要有一个对应的指向。所以我在基类里面加了一个数组来保存类内的对象,然后在编辑器的部分使用ID号对应数组下标,这样初始化的时候可以通过ini的ID取出对应的对象来设置。但是这样就把内部对象暴露出来了或者在对象create之后使用一个initialize函数,在这个函数里面读ini文件查找该类的参数来设置。这样的话就需要每一个类都写一个initialize函数。如果使用inifiles来做ini文件的话,怎么样的结构会比较容易查询包含对象参数。
还是使用自定义格式来做ini文件,一个部分就是一个类,然后直到读到结束符期间读取到一个设置就设置一个~或者有其他什么更好的办法,请大家赐教~

解决方案 »

  1.   

    不是很明白你的意思
    保存对象的属性用一些第三方插件操作起来比较方面。
    如:ehlib组件:PropStorageEh
    PropStorageEh1.SaveProperties;//保存信息
    PropStorageEh1.LoadProperties;//加载信息
    Dev组件也有个Store的组件。
      

  2.   


    这么说吧,我们有一个自己实现的控件库~里面的控件和VCL的类似~
    然后游戏中可能要使用很多窗体,这些窗体里面的可能有窗体也有控件,原来控件的初始化,像背景图,按钮图这些,还有控件或者子窗体的位置是程序在create函数里面写的。
    我现在就是把这部分拿出来,在外部定义,更改资源或者调整位置就不需要再改代码了.
    所以三方插件可能是满足不了我的需求,我需要自己写。
      

  3.   

    没做过游戏,以下是个人见解应该用文本文件保存各种配置信息吧,只有ID,人物,物品...才会放在数据库
    我见过传奇私服的服务端,98%都是文本文件(即脚本)+1个exe,exe很小也就3M左右
      

  4.   

    接你的意思  
    每个控件 都需修改
    只是  第个控件 修改的部分比较统一都是修改 create函数  参数从ini 文件中读取 ?
    那也只能是一一对应了  
      

  5.   

    用xml或者用流保存类,看delphi的持久化