修改 Update
Update/Where/Set
命令通过主键来定位条目,并对条目的属性进行修改。
一个简单的例子,我们如果要提高小麦的产量(原来是1,修改到2),先找到小麦的定义,它在Resources.xml
中:
<GameInfo>
<Kinds>
<Row Kind="KIND_RESOURCE"/>
</Kinds>
<Types>
<!-- Bonus -->
<Row Type="RESOURCE_BANANAS" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_CATTLE" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_COPPER" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_CRABS" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_DEER" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_FISH" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_RICE" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_SHEEP" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_STONE" Kind="KIND_RESOURCE"/>
<Row Type="RESOURCE_WHEAT" Kind="KIND_RESOURCE"/>
...
</Types>
<Resources>
...
<Row ResourceType="RESOURCE_WHEAT" Name="LOC_RESOURCE_WHEAT_NAME" ResourceClassType="RESOURCECLASS_BONUS" Frequency="10"/>
...
</Resources>
<Resource_YieldChanges>
...
<Row ResourceType="RESOURCE_WHEAT" YieldType="YIELD_FOOD" YieldChange="1"/>
...
</Resource_YieldChanges>
其中,对小麦产量造成影响的是在Resource_YieldChanges
这个表中,它指定了资源种类ResourceType
、产物种类YieldType
和产量变化YieldChange
,其中YieldChange
的值我们需要修改为2。
通过查看Assets/GamePlay/Data/Schema/01_GameplaySchema.sql
文件,我们可以查询到Resource_YieldChanges
表的主键是ResourceType
和YieldType
:
CREATE TABLE "Resource_YieldChanges" (
"ResourceType" TEXT NOT NULL,
"YieldType" TEXT NOT NULL,
"YieldChange" INTEGER NOT NULL,
PRIMARY KEY(ResourceType, YieldType),
FOREIGN KEY (ResourceType) REFERENCES Resources(ResourceType) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (YieldType) REFERENCES Yields(YieldType) ON DELETE CASCADE ON UPDATE CASCADE);
因此,我们需要这么写:
<Resource_YieldChanges>
<Update>
<Where ResourceType="RESOURCE_WHEAT" YieldType="YIELD_FOOD"/>
<Set YieldChange="2"/>
</Update>
</Resource_YieldChanges>
其中,Where
中指定了条目的主键,从而查阅到“小麦的食物产量”这一条目,Set
指定了需要修改的内容,即“2”。
又比如说,我们需要修改小麦出现的频率,由于Resources
表的主键是ResourceType
,因此:
<Resources>
<Update>
<Where ResourceType="RESOURCE_WHEAT"/>
<Set Frequency="20"/>
</Update>
</Resources>
这样,我们便将小麦的出现频率翻了倍。