本章介绍Panda3D使用的配置文件。
配置Panda(Configuring Panda)
配置文件Config.prc 在etc文件夹里,它控制Panda配置选项——包括使用OpenGL或DirectX,打印多少调试信息等。下面的表格列出最常用的变量:
变量
值
默认值
说明
load-display
pandagl
pandadx9
pandagl
指定渲染所用的图形API (OpenGL 或DirectX 9)
win-width
像素数
640
指定Panda3D窗口宽度
win-height
像素数
480
指定Panda3D窗口高度
win-origin-x
像素数
100
指定Panda3D窗口左上角的屏幕位置,X坐标
win-origin-y
像素数
100
指定Panda3D窗口左上角的屏幕位置,Y坐标
fullscreen
#t
#f
#f
是否全屏显示(true或false)
undecorated
#t
#f
#f
是否移除窗口边框
cursor-hidden
#t
#f
#f
是否隐藏鼠标指针
show-frame-rate-meter
#t
#f
#f
是否在右上角显示fps
audio-cache-limit
number
32
最多载入声音数
notify-level-[package]
fatal
error
warning
info
debug
spam
info
设定运行时的消息通知级别(fatal最少,spam 最多)
model-path
Path string
480
向路径列表增加载入模型时的搜索路径
texture-path
Path string
480
向路径列表增加载入纹理时的搜索路径
sound-path
Path string
480
向路径列表增加载入声音时的搜索路径
load-file-type ptloader
Enabled
允许载入在pandatool里提供了转换器的文件类型
audio-library-name
fmod_audio
miles_audio
null
fmod_audio
载入适当的音频驱动,如果有Miles的话就选它
want-directtools
#t
#f
#t
line commented out
打开directtools,一个交互式的物体/摄像机操纵工具
want-tk
#t
#f
#t
line commented out
支持Tkinter/PMW (Tk的Python封装)
hardware-point-sprite
#t
#f
#t
渲染点精灵(point sprite)时使用硬件加速
sync-video
#t
#f
#t
使用垂直同步(vertical synchronization)
在程序中访问配置变量(Accessing Config Vars in a Program)
Panda提供一些函数来读取Config.prc文件里设置,并在内存中修改这些值(修改的值并不写回磁盘文件)。通过程序读取并修改设置有2个主要用途:
1、 保留自己的配置数据
2、 调节panda的行为
“保留自己的配置数据”指你的游戏可能有自己的设置需要保留,你只需把配置数据加到panda配置文件,而不用写自己的配置文件解析器(parser)。
假设开发一款网游,网游当然要连接到服务器上,这时就需要一个配置文件来指定服务器的名字。打开Config.prc文件,在文件末尾加上这一行:
my-game-server pandagame.com
注意“my-game-server”是你刚创造的一个全新的变量,panda还不认识它,因此它不会对panda产生什么作用。
使用下面的代码控制这个变量。创建一个ConfigVariableString类实例,然后通过setValue和getValue方法来操作变量。
from pandac.PandaModules import ConfigVariableString
mygameserver = ConfigVariableString("my-game-server","127.0.0.1")
print "Server specified in config file: ", mygameserver.getValue()
# 允许在命令行下改变服务器
if (sys.argv[1]=="--server"): mygameserver.setValue(sys.argv[2])
print "Server that we will use: ", mygameserver.getValue()
如果“my-game-server”变量没有出现在Config.prc文件中,则默认返回ConfigVariableString构造函数的第二个参数。第三个参数可有可无,是关于该变量的一个描述,执行print cvMgr命令时将显示变量的描述文本。
配置变量的类型有:
ConfigVariableString
ConfigVariableInt
ConfigVariableBool
ConfigVariableDouble
ConfigVariableFilename
ConfigVariableList
ConfigVariableSearchPath
除了默认的返回值必须是相应的类型外,大部分变量的使用都跟ConfigVariableString一样。只有ConfigVariableList和 ConfigVariableSearchPath比较特殊,它们的构造函数不接受默认返回值,因为对它们来说,默认值通常是一个空的list或 search path。
我们可以用命令显示某个变量的当前值,下面的例子打印一个字符串型变量的值:
print ConfigVariableString('my-game-server')
Panda3D启动时会在标准的配置目录下自动加载任何*.prc文件,可以用下面的命令输出加载的文件列表:
print cpMgr
它可以确保我们编辑正确的Config.prc文件。
有时我们需要从磁盘读取另外一个配置文件,必须给出文件名。我们用函数loadPrcFile。记住Panda的文件路径使用“/”:
from pandac.PandaModules import loadPrcFile
loadPrcFile("config/Config.prc")
文件的搜索方式与调用loader.loadModel()时搜索模型文件的方式一样。
还可以使用loadPrcFileData来读取一个在Python代码里定义的字符串,就像从磁盘文件读来一样。loadPrcFileData()需 要2个参数,第一个是分配给文件的一个任意字符串名字(字符串可以为空),第二个是文件的内容,如果需要设置一个以上变量的值时,要分行显示每个变量。
例如,panda的配置文件里包含下面一行:
fullscreen 0
默认的panda程序以窗口方式运行,如果要全屏运行的话,必须这么做:
from pandac.PandaModules import loadPrcFileData
loadPrcFileData("", "fullscreen 1")
import direct.directbase.DirectStart
接下来当载入direct.directbase.DirectStart时,全屏标志已被改为真,程序将全屏运行。还有其他方法可以进入全屏,虽然拐了几个弯,但也管用。
可以在运行时(一旦import了DirectStart就进入运行时)用下面的命令得到一个更完全的配置变量列表:
cvMgr.listVariables()