翻译:Panda3D Manual/V. Programming with Panda/C. The Configuration File
2008-04-15 18:17
561 查看
配置文件(The Configuration File)
本章介绍Panda3D使用的配置文件。
配置Panda(Configuring Panda)
配置文件Config.prc 在etc文件夹里,它控制Panda配置选项——包括使用OpenGL或DirectX,打印多少调试信息等。下面的表格列出最常用的变量:
在程序中访问配置变量(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()
本章介绍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) |
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()
相关文章推荐
- 翻译:Panda3D Manual/V. Programming with Panda/A. The Scene Graph
- 翻译:Panda3D Manual/V. Programming with Panda/B. Panda Filename Syntax
- 翻译:Panda3D Manual/V. Programming with Panda/L. Render Effects
- 翻译:Panda3D Manual/V. Programming with Panda/Z. Networking
- 翻译:Panda3D Manual/V. Programming with Panda/D. Actors and Characters
- 翻译:Panda3D Manual/V. Programming with Panda/K. DirectGUI
- 翻译:Panda3D Manual/V. Programming with Panda/S. Particle Effects
- 翻译:Panda3D Manual/V. Programming with Panda/E. Camera Control
- 翻译:Panda3D Manual/V. Programming with Panda/M. Texturing
- 翻译:Panda3D Manual/V. Programming with Panda/T. Collision Detection
- 翻译:Panda3D Manual/V. Programming with Panda/G. Intervals
- 翻译:Panda3D Manual/V. Programming with Panda/N. Pixel and Vertex Shaders
- 翻译:Panda3D Manual/V. Programming with Panda/U. Hardware support
- 翻译:Panda3D Manual/V. Programming with Panda/O. Finite State Machines
- 翻译:Panda3D Manual/V. Programming with Panda/W. Physics Engine
- 翻译:Panda3D Manual/V. Programming with Panda/H. Tasks and Event Handling
- 翻译:Panda3D Manual/V. Programming with Panda/V. Math Engine
- 翻译:Panda3D Manual/V. Programming with Panda/G. Intervals
- 翻译:Panda3D Manual/V. Programming with Panda/I. Fog and Lighting
- 翻译:Panda3D Manual/V. Programming with Panda/R. Panda Utility Functions