hgeResourceManager 是一个资源管理类
1. 构造函数
hgeResourceManager(
const char* scriptname = 0
);
scriptname 表示资源脚本文件名(Resource script filename),如果此参数为 0,表示不使用 Resource script file
现在来介绍一下资源脚本:
资源脚本是一个文本文件,用于定义资源。资源文件由多个(或一个)命令(command)组成,格式如下:
Command ResourceName : BaseResourceName
{
Parameter1=Value1 ; 这里是注释
Parameter2=Value2
...
ParameterN=ValueN
}
我们来看一个例子:
Resource level1
{
filename=levels/level1.dat
resgroup=1
}
这里只有一个命令:Resource,Resource 命令定义了一个原生资源(raw resource)
注意,资源文件是大小写敏感的,资源文件中可以有注释,使用“;”开头。资源文件的参数(parameter)是没有顺序限制的。
同种类型的资源,不可以使用相同的资源名(Resource Name)。在定义资源名或者文件路径时,出现空格或者特殊字符,需要把整个字符串用双引号引起来。
BaseResourceName 是可选的,如果被指定,那么就表示对 BaseResourceName 对应的参数(Parameters)的拷贝,例如:
Sprite wizard
{
texture=characters
rect=0,0,32,32
hotspot=16,16
blendmode=COLORMUL,ALPHABLEND,NOZWRITE
resgroup=1
}
Sprite orc : wizard
{
rect=0,64,32,32 ; 设定新值
color=FF808000 ; 设定新值
}
这里 orc 除了 rect 和 color 两个参数以外,其他参数值都和 wizard 一样。
hgeResourceManager 是可以容错的,如果脚本出现错误,不会导致程序的终止,错误信息将被写入日志文件。
1)Command(命令)
Command 表明了资源的含义,含有以下几种:
Include,Resource,Texture,Sound,Music,Stream,Target,Sprite,Animation,Font,Particle,Distortion,StringTable
<1> Include 命令:Include 命令用于导入其他的资源脚本文件,例如:
Include level2.res ; level2.res 是一个资源脚本文件
注意,自引用和循环引用是可行的,它们会被检查出来,并报告在日志文件中,例如:
<2> Resource 命令:定义原生资源(raw resource)
参数: filename,resgroup。例如:
Resource level1
{
filename=levels/level1.dat ; 可以使用绝对或者相对路径,相对路径是相对于应用程序所在的文件夹或者是相对于资源包的根目录,特别应该注意的是,如果它是一个相对路径,相对的是应用程序或者资源包的根目录而不是脚本文件
resgroup=1 ; 资源组(resource group)标识符,0 表示没有特定的组
}
<3> Texture 命令:定义一个纹理
参数:filename,mipmap,resgroup。例如:
Texture background
{
filename=images/bg.jpg
resgroup=1
}
由于没有设定 mipmap 参数的值,因此它取默认值。
<4> Sound 命令:定义一个音效
参数:filename,resgroup。例如:
Sound explosion1
{
filename=sounds/expl1.ogg
resgroup=1
}
<5> Music 命令