xxxxx_snds.xml:定义单位语音




在SoundXML.bar中,凡是带有_snds的xml文件都是用来定义单个单位语音的。



我拿Settler_sbds作为例子(部分语句省略):
<protounit name="Settler"> 村民的调用名
<soundtype name="Select"> 选取单位的语音
<variationlogic> 当动画xml定义了两个模型以上(如村民一男一女),用这个语句进行区分
<choice name="0"> 男村民,实际为单位xml定义的第一个模型
<civlogic> 区分各文明语音
<choice name="Nature"/> 大自然
<choice name="French"> 法国
<soundset name="FrenchSettlerMaleSelect"/>Soundsetsy.xml定义的调用名
</choice>
<choice name="British"> 英国
<soundset name="BritishSettlerMaleSelect"/>
</choice>
<choice name="Russians"> 俄罗斯
<soundset name="RussianSettlerMaleSelect"/>
</choice>
</civlogic>
</choice>
<choice name="1"> 女村民,实际为单位xml定义的第二个模型
<civlogic> 区分各文明语音
<choice name="Nature"/> 大自然
<choice name="French"> 法国
<soundset name="FrenchSettlerMaleSelect"/>Soundsetsy.xml定义的调用名
</choice>
<choice name="British"> 英国
<soundset name="BritishSettlerMaleSelect"/>
</choice>
<choice name="Russians"> 俄罗斯
<soundset name="RussianSettlerMaleSelect"/>
</choice>
</civlogic>
</choice>
</variationlogic>
</soundtype>

<soundtype name="Grunt"> 受到伤害,惨叫语音
<variationlogic> 当动画xml定义了两个模型以上(如村民一男一女),用这个语句进行区分
<choice name="0">男村民惨叫,实际为单位xml定义的第一个模型
<soundset name="GenericMaleGrunt"/>Soundsetsy.xml定义的调用名
</choice>
<choice name="1">女村民惨叫,实际为单位xml定义的第二个模型
<soundset name="GenericFemaleGrunt"/>Soundsetsy.xml定义的调用名
</choice>
</variationlogic>
</soundtype>

<soundtype name="Acknowledge">右键指挥单位的语音
<variationlogic>
<choice name="0">
<civlogic>
<choice name="Nature">
<targetlogic>
<choice name="default"/>
<choice name="enemy"/>
</targetlogic>
</choice>
<choice name="French">
<targetlogic>根据点击目标不同触发不同语音
<choice name="default">默认,例如点击空地以及以牲畜为指派目标时
<soundset name="FrenchSettlerMaleAcknowledge"/>
</choice>
<choice name="enemy">敌人
<soundset name="FrenchSettlerMaleAttack"/>
</choice>
<choice name="build">建造
<soundset name="FrenchSettlerMaleBuild"/>
</choice>
<choice name="Huntable">打猎,Huntable是单位标签,指猎物
<soundset name="FrenchSettlerMaleGatherMeat"/>
</choice>
<choice name="Tree">砍树,Tree为树木的标签
<soundset name="FrenchSettlerMaleGatherWood"/>
</choice>
<choice name="AbstractFarm">采集磨坊、稻田农田等,村庄也有AbstractFarm这个标签的,所以你应该懂我想说什么吧?
<soundset name="FrenchSettlerMaleFarm"/>
</choice>
<choice name="AbstractMine">采集矿物,AbstractMine是矿场标签,种植园也有这个标签。
<soundset name="FrenchSettlerMaleGatherCoin"/>
</choice>
<choice name="AbstractResourceCrate">采集箱子
<soundset name="FrenchSettlerMaleAcknowledge"/>
</choice>
<choice name="AbstractFruit">采集浆果
<soundset name="FrenchSettlerMaleGatherFruit"/>
</choice>
</targetlogic>
</choice>
</civlogic>
</variationlogic>
</soundtype>
</protounit>
美观性太差,最不好写的教程之一....................

看到眼都要花了,随便乱写一些东西上去。

整理一下语句:


<protounit name="XXXXX">
<soundtype name="XX">
<variationlogic>
<choice name="X">
<civlogic>
<choice name="XXXX">
<targetlogic>
<choice name="XXXX">
<soundset name="XXXX"/>
</choice>
</targetlogic>
</choice>
<choice name="XXXX">
<targetlogic>
<choice name="XXXX">
<soundset name="XXXX"/>
</choice>
</targetlogic>
</choice>
</civlogic>
</choice>
<choice name="X">
<civlogic>
<choice name="XXXX">
<targetlogic>
<choice name="XXXX">
<soundset name="XXXX"/>
</choice>
</targetlogic>
</choice>
<choice name="XXXX">
<targetlogic>
<choice name="XXXX">
<soundset name="XXXX"/>
</choice>
</targetlogic>
</choice>
</civlogic>
</choice>
</variationlogic>
</soundtype>
</protounit>

这个文件要注意语句的对应,不然很容易出现语法错误,最好使用一个有语法高亮能折叠标签的软件,例如notepad++。

第一个定义是protounit(单位调用名);
第二个定义是soundtype;其他定义都必须在soundtype以内定义,顺序可以随便;倒数第二个定义是targetlogic;最后一个定义是soundset;
targetlogic、variationlogic、civlogic用的都是choice name="XXXX"值。


一般情况下没有必要将所有定义都写上,一般单位只用上protounit(单位调用名)、soundtype(类型)、civlogic(国家)这三个定义,然后再加上
像类型是死亡(soundtype name="Death"),就没有必要加上targetlogic这个定义,因为加了也没用,targetlogic只用于右键指挥单位(soundtype name="Acknowledge")

补充一点:<soundset name="XXXX"/>也可以改成<soundset name="XXXX"></soundset>格式,这个是xml文件的语法
protounit name=""
第一个定义,定义单位调用名的语音
<protounit name="XXXXX">
单位调用名
 
soundtype name=""
区分类型
<soundtype name="Select">
选取单位的语音
<soundtype name="Grunt">
受到伤害后惨叫
<soundtype name="Death">
死亡的语音
<soundtype name="Creation">
生产单位的语音
<soundtype name="Acknowledge">
按右键指挥的语音
<soundtype name="Exists">
重复一个语音,例如汤尼卡车的发动机(噪音)
<soundtype name="KnockOut">
被打倒后的语音(探险家倒下那种)
<soundtype name="KnockOutRevived">
倒下的探险家复活语音
<soundtype name="Ransomed">
赎回(探险家)的语音
<soundtype name="Claim">
作用不明
 
<variationlogic>
区分不同模型的语音
	<choice name="0">
单位xml定义两个模型以上,按照顺序第一个模型
	<choice name="1">
单位xml定义两个模型以上,按照顺序第二个模型
	<choice name="X">
单位xml定义两个模型以上,按照顺序第X+1个模型
 
<civlogic>
区分不同国家的语音
	<choice name="Nature">
大自然
	<choice name="French">
法国
	<choice name="British">
英国
	<choice name="Russians">
俄罗斯
	<choice name="Ottomans">
土耳其(奥斯曼)
	<choice name="Dutch">
荷兰
	<choice name="Spanish">
西班牙
	<choice name="Portuguese">
葡萄牙
	<choice name="Germans">
德国
	<choice name="SPCAct1">
圣约翰骑士团
	<choice name="SPCAct2">
布莱克的佣兵
	<choice name="SPCAct3">
猎鹰公司
	<choice name="XPIroquois">
易落魁
	<choice name="XPSioux">
苏族
	<choice name="XPAztec">
阿兹特克
	<choice name="XPSPC">
酋长战役
	<choice name="Chinese">
中国
	<choice name="Indians">
印度
	<choice name="Japanese">
日本
	<choice name="SPCJapanese">
日本战役
	<choice name="SPCChinese">
中国战役
	<choice name="SPCIndians">
印度战役
	<choice name="XXXXX">
Civs.xml定义的国家调用名
 
<targetlogic>
指挥单位时区分点中不同的类别的语音
	<choice name="default">
默认,非下列设定都是采用这个
	<choice name="enemy">
敌人
	<choice name="build">
建造建筑
	<choice name="Huntable">
猎物
	<choice name="Tree">
树木
	<choice name="AbstractFarm">
磨坊、稻田、农田等建筑物
	<choice name="AbstractMine">
矿场
	<choice name="AbstractResourceCrate">
木箱
	<choice name="AbstractFruit">
浆果丛
用其他单位标签或调用名不能生效。
 
<soundset name="XXXX"/>
Soundsetsy.xml定义的调用名