文明6魔法兵种创建方法一览 文明6如何创建魔法兵种

更新时间:2022-03-28 19:51:24作者:佚名

文明6魔法兵种创建方法一览 文明6如何创建魔法兵种

  今天小编为大家带来的是文明6魔法兵种创建方法一览,教你创建一个会闪电术的魔法兵种!感兴趣的小伙伴们快来看看吧!

  魔法兵种创建方法一览

文明6魔法兵种创建方法一览 文明6如何创建魔法兵种

  我感觉大家都猜到了,什么嘛,不就是用宗教单位的模型做个兵种嘛,很简单的嘛。是的,大家都知道文明6新加入的宗教战斗还是挺炫酷的,电闪雷鸣什么,这里就是准备教大家用宗教单位的模型创建一个新的兵种。

  至于截图我就不放了,和大家游戏里宗教单位战斗的效果一毛一样,不过这次魔法师们则是和普通远程战斗单位一样可以攻击普通单位了。

  首先打开Sid Meier's Civilization VI\Base\Assets\Gameplay\Data下的Units.xml

  下面所有红字部分都是我们需要添加的代码,就不再一一指明了。

  首先我们再下创建一个新单位wizard

  搜索<Types>
  <Types>
<Row Type="UNIT_WIZARD" Kind="KIND_UNIT"/>
<!-- Civilian-->
<Row Type="UNIT_SETTLER" Kind="KIND_UNIT"/>
<Row Type="UNIT_BUILDER" Kind="KIND_UNIT"/>
<Row Type="UNIT_TRADER" Kind="KIND_UNIT"/>
<Row Type="UNIT_MISSIONARY" Kind="KIND_UNIT"/>
<Row Type="UNIT_APOSTLE" Kind="KIND_UNIT"/>

  然后写入AI

  搜索<UnitAiInfos>,这里添加的是和普通的远程单位一样的AI。

  <UnitAiInfos>
<Row UnitType="UNIT_WIZARD" AiType="UNITAI_COMBAT"/>
<Row UnitType="UNIT_WIZARD" AiType="UNITTYPE_RANGED"/>
<Row UnitType="UNIT_WIZARD" AiType="UNITTYPE_LAND_COMBAT"/>

<!-- Civilian-->
<Row UnitType="UNIT_SETTLER" AiType="UNITAI_SETTLE"/>
<Row UnitType="UNIT_SETTLER" AiType="UNITTYPE_CIVILIAN"/>
<Row UnitType="UNIT_BUILDER" AiType="UNITAI_BUILD"/>
<Row UnitType="UNIT_BUILDER" AiType="UNITTYPE_CIVILIAN"/>
<Row UnitType="UNIT_TRADER" AiType="UNITTYPE_CIVILIAN"/>

  然后选择替代兵种

  搜索<UnitReplaces>,这里我没有添加任何代码,因为不打算用它来替代任何单位。有需要的同学按照下面的格式添加,蓝色字体部分为特色单位,绿色字体部分为需要替代的普通单位。

  <UnitReplaces>
<Row CivUniqueUnitType="UNIT_GREEK_HOPLITE" ReplacesUnitType="UNIT_SPEARMAN"/>
<Row CivUniqueUnitType="UNIT_EGYPTIAN_CHARIOT_ARCHER" ReplacesUnitType="UNIT_HEAVY_CHARIOT"/>
<Row CivUniqueUnitType="UNIT_SPANISH_CONQUISTADOR" ReplacesUnitType="UNIT_MUSKETMAN"/>
<Row CivUniqueUnitType="UNIT_ROMAN_LEGION" ReplacesUnitType="UNIT_SWORDSMAN"/>

  添加单位类型

  搜索<TypeTags>

  <TypeTags>
<Row Type="UNIT_WIZARD" Tag="CLASS_RANGED"/>
<Row Type="UNIT_BARBARIAN_HORSEMAN" Tag="CLASS_LIGHT_CAVALRY"/>
<Row Type="UNIT_BARBARIAN_HORSE_ARCHER" Tag="CLASS_RANGED_CAVALRY"/>
<Row Type="UNIT_SCOUT" Tag="CLASS_RECON"/>
<Row Type="UNIT_SCOUT" Tag="CLASS_REVEAL_STEALTH"/>
<Row Type="UNIT_RANGER" Tag="CLASS_RECON"/>
<Row Type="UNIT_WARRIOR" Tag="CLASS_MELEE"/>
<Row Type="UNIT_SWORDSMAN" Tag="CLASS_MELEE"/>
<Row Type="UNIT_MUSKETMAN" Tag="CLASS_MELEE"/>

  然后就是添加具体的单位数据了,搜索<Units>

  <Units>
<Row UnitType="UNIT_WIZARD" BaseMoves="2" Cost="50" AdvisorType="ADVISOR_CONQUEST" BaseSightRange="2" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_LAND_COMBAT" Name="LOC_UNIT_WIZARD_NAME" Description="LOC_UNIT_WIZARD_DESCRIPTION" PurchaseYield="YIELD_GOLD" PromotionClass="ROMOTION_CLASS_RANGED" Maintenance="1" Combat="15" RangedCombat="25" Range="2" PrereqTech="TECH_ARCHERY" MandatoryObsoleteTech="TECH_BALLISTICS"/>
<Row UnitType="UNIT_SETTLER" BaseMoves="2" Cost="80" AdvisorType="ADVISOR_GENERIC" BaseSightRange="3" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_CIVILIAN" FoundCity="true" PopulationCost="1" PrereqPopulation="2" Name="LOC_UNIT_SETTLER_NAME" Description="LOC_UNIT_SETTLER_DESCRIPTION" CanCapture="False" CostProgressionModel="COST_PROGRESSION_PREVIOUS_COPIES" CostProgressionParam1="20" PurchaseYield="YIELD_GOLD" PseudoYieldType="SEUDOYIELD_UNIT_SETTLER"/>
<Row UnitType="UNIT_BUILDER" BaseMoves="2" Cost="50" AdvisorType="ADVISOR_GENERIC" BaseSightRange="2" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_CIVILIAN" Name="LOC_UNIT_BUILDER_NAME" Description="LOC_UNIT_BUILDER_DESCRIPTION" CanCapture="False" CostProgressionModel="COST_PROGRESSION_PREVIOUS_COPIES" CostProgressionParam1="4" PurchaseYield="YIELD_GOLD" BuildCharges="3"/>
<Row UnitType="UNIT_TRADER" BaseMoves="2" IgnoreMoves="true" Cost="40" AdvisorType="ADVISOR_GENERIC" BaseSightRange="2" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_CIVILIAN" Name="LOC_UNIT_TRADER_NAME" Description="LOC_UNIT_TRADER_DESCRIPTION" CanCapture="False" CostProgressionModel="COST_PROGRESSION_GAME_PROGRESS" CostProgressionParam1="400" PurchaseYield="YIELD_GOLD" PseudoYieldType="SEUDOYIELD_UNIT_TRADE" MakeTradeRoute="true" PrereqCivic="CIVIC_FOREIGN_TRADE"/>

  这里的数据比较多,来一一说明一下。

  UnitType="UNIT_WIZARD"这里不用多说,这行代码是哪个单位就靠它来识别了

  BaseMoves="2"移动力为2

  Cost="50"生产消耗的锤子为50

  AdvisorType="ADVISOR_CONQUEST"这里应该影响的是顾问建议的类型,没啥用

  BaseSightRange="2"视野范围为2

  ZoneOfControl="false"是否有ZOC,也就是游戏里走到近战单位边上会不能继续移动,远程单位一般没有ZOC功能。如果需要带有ZOC则把"false"改成“ture”

  Domain="DOMAIN_LAND"表示这是一个陆地单位

  FormationClass="FORMATION_CLASS_LAND_COMBAT"表示这是一个陆军战斗单位

  Name="LOC_UNIT_WIZARD_NAME" 单位名称,可以在对应的语言翻译文件里关联,比如汉化就是需要对应这个名称

  Description="LOC_UNIT_WIZARD_DESCRIPTION" 单位简介,作用同上,建造列表上面的说明。

  PurchaseYield="YIELD_GOLD"可以用金钱购买的意思,需要需要改成用信仰购买的话把"YIELD_GOLD"改成"YIELD_FAITH"

  PromotionClass="ROMOTION_CLASS_RANGED"单位晋升类型,就是单位升级后可以选择的那个列表,这里是远程单位和弓箭手一样的类型。

  Maintenance="1"维护费为1

  Combat="15" 单位的战斗力为15,对于远程单位来讲就是防御力,近战单位进攻防御都靠他

  RangedCombat="25"远程攻击力位25

  Range="2" 射程2,一般来讲只有远程单位需要它

  PrereqTech="TECH_ARCHERY"前提科技弓箭,为啥?因为这段文字完全是从弓箭手那里复制过来的。。。不需要的可以直接删除前提科技则开局即可建造

  MandatoryObsoleteTech="TECH_BALLISTICS"过时科技,同上

  如需要添加为某个文明的特色单位,则需要在加上TraitType="XXXXX",这里的XXXX指的是对应文明的或者领袖的特性,不是让你写5个X,当然你也可以完全写个新的特性然后加到某个文明、城邦甚至小野都可以。

  如需要添加需求的资源类型,则需要在里面机上StrategicResource="XXXXX"同上这里不是让你写5个X,而是某种资源的代码。。。不写则表示不需要战略资源。

  接着添加单位升级信息,搜索<UnitUpgrades>,这里是升级成弩手。。。需要升级成别的兵种可以DIY

  <UnitUpgrades>
<Row Unit="UNIT_WIZARD" UpgradeUnit="UNIT_CROSSBOWMAN"/>
<!--Recon-->
<Row Unit="UNIT_SCOUT" UpgradeUnit="UNIT_RANGER"/>
<!--Melee-->
<Row Unit="UNIT_WARRIOR" UpgradeUnit="UNIT_SWORDSMAN"/>
<Row Unit="UNIT_SWORDSMAN" UpgradeUnit="UNIT_MUSKETMAN"/>
<Row Unit="UNIT_MUSKETMAN" UpgradeUnit="UNIT_INFANTRY"/>
<Row Unit="UNIT_SPEARMAN" UpgradeUnit="UNIT_PIKEMAN"/>
<Row Unit="UNIT_PIKEMAN" UpgradeUnit="UNIT_AT_CREW"/>

  如果需要添加建筑信息,比如需要寺庙才能建造,搜索<Unit_BuildingPrereqs>

<Unit_BuildingPrereqs>
<Row Unit="UNIT_WIZARD" PrereqBuilding="BUILDING_TEMPLE"/>
<Row Unit="UNIT_MISSIONARY" PrereqBuilding="BUILDING_SHRINE"/>
<Row Unit="UNIT_APOSTLE" PrereqBuilding="BUILDING_TEMPLE"/>
<Row Unit="UNIT_APOSTLE" PrereqBuilding="BUILDING_STAVE_CHURCH"/>
<Row Unit="UNIT_INQUISITOR" PrereqBuilding="BUILDING_TEMPLE"/>
<Row Unit="UNIT_INQUISITOR" PrereqBuilding="BUILDING_STAVE_CHURCH"/>
<Row Unit="UNIT_MILITARY_ENGINEER" PrereqBuilding="BUILDING_ARMORY"/>
<Row Unit="UNIT_ARCHAEOLOGIST" PrereqBuilding="BUILDING_MUSEUM_ARTIFACT" NumSupported="1"/>
</Unit_BuildingPrereqs>

  到这里units.xml就修改完了,这个时候这个单位已经存在于你的游戏里了,只是还没有制定模型、图标、对应的汉化单位名称。所以我们继续。

  下面是找到D:\Sid Meier's Civilization VI\Base\Assets\Text\Translations,如果你需要改简体中文的,打开Vanilla_zh_Hans_CN.xml,其他语言请打开对应文件。

  <GameData>
  <LocalizedText>
  <Replace Tag="LOC_UNIT_WIZARD_NAME" Language="zh_Hans_CN">
  <Text>魔法师</Text>
  </Replace>
  <Replace Tag="LOC_UNIT_WIZARD_DESCRIPTION" Language="zh_Hans_CN">
  <Text>用魔法战斗的远程单位</Text>
  </Replace>

  <Replace Tag="LOC_BUILDING_TLACHTLI_NAME" Language="zh_Hans_CN">
  <Text>蹴球场</Text>
  </Replace>
  <Replace Tag="LOC_BUILDING_HUEY_TEOCALLI_NAME" Language="zh_Hans_CN">
  <Text>休伊神庙</Text>
  </Replace>

  想改成什么名字可以自行替换。

  接下来的重点就是单位模型,毕竟模型对了才叫魔法兵种嘛。

  打开Sid Meier's Civilization VI\Base\ArtDefs下的UNIT.ARTDEF

  搜索UNIT_APOSTLE,这是使徒的模型代码:

<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="Scattered"/>
<m_RootCollectionName text="UnitFormationTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>false</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Formation"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitCombat"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>false</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="UnitCombat"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitFormationTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="EscortFormation"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="UNIT_ANCIENTEMBARK"/>
<m_RootCollectionName text="Units"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text="Units"/>
<m_ParamName text="EmbarkedUnit"/>
</Element>
<Element class="AssetObjects::BoolValue">
<m_bValue>false</m_bValue>
<m_ParamName text="DoNotDisplayCharges"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitCulture"/>
<m_ArtDefPath text="Cultures.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Culture"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="Era"/>
<m_ArtDefPath text="Eras.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Era"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="Units"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="roxyUnit"/>
</Element>
<Element class="AssetObjects::BoolValue">
<m_bValue>false</m_bValue>
<m_ParamName text="layDeathOnDestroy"/>
</Element>
<Element class="AssetObjects::IntValue">
<m_nValue>-500</m_nValue>
<m_ParamName text="DisplayLevel"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections>
<Element>
<m_CollectionName text="Members"/>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::FloatValue">
<m_fValue>1.000000</m_fValue>
<m_ParamName text="Scale"/>
</Element>
<Element class="AssetObjects::IntValue">
<m_nValue>4</m_nValue>
<m_ParamName text="Count"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="Apostle"/>
<m_RootCollectionName text="UnitMemberTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text="Units"/>
<m_ParamName text="Type"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="Members1"/>
</Element>
</Element>
<Element>
<m_CollectionName text="Audio"/>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::StringValue">
<m_Value text=""/>
<m_ParamName text="XrefName"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="Entry"/>
</Element>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::StringValue">
<m_Value text="Apostle"/>
<m_ParamName text="XrefName"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="MISSIONARY"/>
</Element>
</Element>
</m_ChildCollections>
<m_Name text="UNIT_APOSTLE"/>
</Element>

  直接把上面一大段代码全部复制下来,在下面粘贴。

<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="Scattered"/>
<m_RootCollectionName text="UnitFormationTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>false</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Formation"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitCombat"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>false</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="UnitCombat"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitFormationTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="EscortFormation"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="UNIT_ANCIENTEMBARK"/>
<m_RootCollectionName text="Units"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text="Units"/>
<m_ParamName text="EmbarkedUnit"/>
</Element>
<Element class="AssetObjects::BoolValue">
<m_bValue>false</m_bValue>
<m_ParamName text="DoNotDisplayCharges"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="UnitCulture"/>
<m_ArtDefPath text="Cultures.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Culture"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="Era"/>
<m_ArtDefPath text="Eras.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="Era"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text=""/>
<m_RootCollectionName text="Units"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text=""/>
<m_ParamName text="roxyUnit"/>
</Element>
<Element class="AssetObjects::BoolValue">
<m_bValue>false</m_bValue>
<m_ParamName text="layDeathOnDestroy"/>
</Element>
<Element class="AssetObjects::IntValue">
<m_nValue>-500</m_nValue>
<m_ParamName text="DisplayLevel"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections>
<Element>
<m_CollectionName text="Members"/>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::FloatValue">
<m_fValue>1.000000</m_fValue>
<m_ParamName text="Scale"/>
</Element>
<Element class="AssetObjects::IntValue">
<m_nValue>4</m_nValue>
<m_ParamName text="Count"/>
</Element>
<Element class="AssetObjects::ArtDefReferenceValue">
<m_ElementName text="Apostle"/>
<m_RootCollectionName text="UnitMemberTypes"/>
<m_ArtDefPath text="Units.artdef"/>
<m_CollectionIsLocked>true</m_CollectionIsLocked>
<m_TemplateName text="Units"/>
<m_ParamName text="Type"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="Members1"/>
</Element>
</Element>
<Element>
<m_CollectionName text="Audio"/>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::StringValue">
<m_Value text=""/>
<m_ParamName text="XrefName"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="Entry"/>
</Element>
<Element>
<m_Fields>
<m_Values>
<Element class="AssetObjects::StringValue">
<m_Value text="Apostle"/>
<m_ParamName text="XrefName"/>
</Element>
</m_Values>
</m_Fields>
<m_ChildCollections/>
<m_Name text="MISSIONARY"/>
</Element>
</Element>
</m_ChildCollections>
<m_Name text="UNIT_WIZARD"/>
</Element>

  重点是紫色部分的单位代码要改成我们创建的自定义单位的代码也就是UNIT_WIZARD,其他部分原封不动即可。

  最后需要制定单位的图标,单位的图标修改是在Sid Meier's Civilization VI\Base\Assets\UI\Icons下的Icons_UnitFlags.xml、Icons_UnitPortraits.xml、Icons_Units.xml,似乎版子里已经有大神讲过怎么修改了,这里就不赘述了。其实修改代码很简单,无非是直接模仿原来的格式复制下来再改个名字有需要的话微调一下数值什么的。

  到此为止我们就大功告成了,进入游戏里你就会发现一个新的单位魔法师,可以用闪电劈人。