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定义的调用名