1
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 附加 - 数据
|
||||
/// </summary>
|
||||
public class DataAddition {
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int armorClass = 0;
|
||||
|
||||
/// <summary> 添加属性 </summary>
|
||||
public void Add(DataAddition value) {
|
||||
armorClass += value.armorClass;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f600b7e509b166244a37c240ffee12ba
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,77 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 数据
|
||||
/// </summary>
|
||||
public class DataAttribute {
|
||||
/// <summary> 力量(strength) </summary>
|
||||
public virtual int Str { get; set; }
|
||||
/// <summary> 敏捷(dexterity) </summary>
|
||||
public virtual int Dex { get; set; }
|
||||
/// <summary> 体质(constitution) </summary>
|
||||
public virtual int Con { get; set; }
|
||||
/// <summary> 智力(intelligence) </summary>
|
||||
public virtual int Int { get; set; }
|
||||
/// <summary> 感知(wisdom) </summary>
|
||||
public virtual int Wis { get; set; }
|
||||
/// <summary> 魅力(charisma) </summary>
|
||||
public virtual int Cha { get; set; }
|
||||
|
||||
/// <summary> 力量调整值(strength) </summary>
|
||||
public int StrModifier => Modifier(Str);
|
||||
/// <summary> 敏捷调整值(dexterity) </summary>
|
||||
public int DexModifier => Modifier(Dex);
|
||||
/// <summary> 体质调整值(constitution) </summary>
|
||||
public int ConModifier => Modifier(Con);
|
||||
/// <summary> 智力调整值(intelligence) </summary>
|
||||
public int IntModifier => Modifier(Int);
|
||||
/// <summary> 感知调整值(wisdom) </summary>
|
||||
public int WisModifier => Modifier(Wis);
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => Modifier(Cha);
|
||||
|
||||
/// <summary> 创建初始属性 </summary>
|
||||
public static DataAttribute Initial() {
|
||||
DataAttribute attribute = new DataAttribute();
|
||||
attribute.Str = Dice.RollAttribute();
|
||||
attribute.Dex = Dice.RollAttribute();
|
||||
attribute.Con = Dice.RollAttribute();
|
||||
attribute.Int = Dice.RollAttribute();
|
||||
attribute.Wis = Dice.RollAttribute();
|
||||
attribute.Cha = Dice.RollAttribute();
|
||||
return attribute;
|
||||
}
|
||||
// 计算属性调整值(属性值-10)/2 向下取整
|
||||
public int Modifier(int value) {
|
||||
return (int)System.Math.Floor((value - 10) / 2.0);
|
||||
}
|
||||
/// <summary> 添加属性 </summary>
|
||||
public void Add(DataAttribute value) {
|
||||
Str += value.Str;
|
||||
Dex += value.Dex;
|
||||
Con += value.Con;
|
||||
Int += value.Int;
|
||||
Wis += value.Wis;
|
||||
Cha += value.Cha;
|
||||
}
|
||||
/// <summary> 减少属性 </summary>
|
||||
public void Sub(DataAttribute value) {
|
||||
Str -= value.Str;
|
||||
Dex -= value.Dex;
|
||||
Con -= value.Con;
|
||||
Int -= value.Int;
|
||||
Wis -= value.Wis;
|
||||
Cha -= value.Cha;
|
||||
}
|
||||
/// <summary> 覆盖属性 </summary>
|
||||
public void Cover(DataAttribute value) {
|
||||
Str = value.Str;
|
||||
Dex = value.Dex;
|
||||
Con = value.Con;
|
||||
Int = value.Int;
|
||||
Wis = value.Wis;
|
||||
Cha = value.Cha;
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 角色 - 数据
|
||||
/// </summary>
|
||||
public class DataCharacter : DataAttribute {
|
||||
/// <summary> 角色名字 </summary>
|
||||
public string name;
|
||||
/// <summary> 经验点 </summary>
|
||||
public int expPoint;
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race;
|
||||
/// <summary> 属性 </summary>
|
||||
public DataAttribute basis;
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession;
|
||||
/// <summary> 装备栏 </summary>
|
||||
public DataEquipmentSlot equipmentSlot;
|
||||
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int Level => GetLevel();
|
||||
/// <summary> 生命点 </summary>
|
||||
public int HitPoint => GetHitPoint();
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int ArmorClass => GetArmorClass();
|
||||
|
||||
public override int Str { get => basis.Str + race.Str; }
|
||||
public override int Dex { get => basis.Dex + race.Dex; }
|
||||
public override int Con { get => basis.Con + race.Con; }
|
||||
public override int Int { get => basis.Int + race.Int; }
|
||||
public override int Wis { get => basis.Wis + race.Wis; }
|
||||
public override int Cha { get => basis.Cha + race.Cha; }
|
||||
|
||||
/// <summary> 设置职业 </summary>
|
||||
public void Settings(DataRace race) {
|
||||
this.race = race;
|
||||
}
|
||||
/// <summary> 设置职业 </summary>
|
||||
public void Settings(DataProfession profession) {
|
||||
this.profession = profession;
|
||||
profession.character = this;
|
||||
}
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int GetLevel() {
|
||||
// TODO:需要补充多职业的等级总和
|
||||
return profession.level;
|
||||
}
|
||||
/// <summary> 生命点 </summary>
|
||||
public int GetHitPoint() {
|
||||
// TODO:需要补充多职业的生命值加成
|
||||
return profession.HitPoint();
|
||||
}
|
||||
/// <summary> 计算护甲等级(AC) </summary>
|
||||
public int GetArmorClass() {
|
||||
// TODO:需要补充专长,技能,熟练之类的加值
|
||||
return equipmentSlot.GetArmorClass(DexModifier);
|
||||
}
|
||||
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
public static DataCharacter Create(string name) {
|
||||
DataCharacter character = new DataCharacter();
|
||||
character.name = name;
|
||||
character.race = DataRace.None();
|
||||
character.basis = Initial();
|
||||
character.profession = DataProfession.None();
|
||||
character.profession.Initial(character);
|
||||
character.equipmentSlot = new DataEquipmentSlot();
|
||||
return character;
|
||||
}
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
public static DataCharacter Create(string name, DataRace race, DataProfession profession) {
|
||||
DataCharacter character = new DataCharacter();
|
||||
character.name = name;
|
||||
character.race = race;
|
||||
character.basis = Initial();
|
||||
character.profession = profession;
|
||||
character.profession.Initial(character);
|
||||
character.equipmentSlot = new DataEquipmentSlot();
|
||||
return character;
|
||||
}
|
||||
|
||||
// 打印角色卡
|
||||
public void PrintCharacterSheet() {
|
||||
Debug.Log($"=== {name} LV{Level} ===");
|
||||
Debug.Log($"种族: {race.name}");
|
||||
Debug.Log($"职业: {profession.name}");
|
||||
Debug.Log($"力量: {Str} ({StrModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"敏捷: {Dex} ({DexModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"体质: {Con} ({ConModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"智力: {Int} ({IntModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"感知: {Wis} ({WisModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"魅力: {Cha} ({ChaModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"经验值: {expPoint}");
|
||||
Debug.Log($"生命值: {HitPoint}");
|
||||
Debug.Log($"护甲等级: {ArmorClass})");
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 种族 - 数据
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public readonly string name;
|
||||
|
||||
public DataRace(string name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// 混血人类,木精灵,丘陵矮人(Hill Dwarf),龙裔,半精灵
|
||||
/// <summary> 无种族 </summary>
|
||||
public static DataRace None() {
|
||||
return new DataRace("未知");
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataRace Random() {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Human(); }
|
||||
if (index == 2) { return Elven(); }
|
||||
if (index == 3) { return Dwarf(); }
|
||||
if (index == 4) { return Orc(); }
|
||||
if (index == 5) { return Halfling(); }
|
||||
return None();
|
||||
}
|
||||
/// <summary> 人类(Human) </summary>
|
||||
public static DataRace Human() {
|
||||
DataRace race = new DataRace("人类");
|
||||
// 种族属性加成 全属性+1
|
||||
race.Str = 1; race.Dex = 1; race.Con = 1;
|
||||
race.Int = 1; race.Wis = 1; race.Cha = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 精灵(Elven) </summary>
|
||||
public static DataRace Elven() {
|
||||
DataRace race = new DataRace("精灵");
|
||||
// 种族属性加成 敏捷+2 智力+2 感知+1
|
||||
race.Dex = 2; race.Int = 2; race.Int = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 矮人(Dwarf) </summary>
|
||||
public static DataRace Dwarf() {
|
||||
DataRace race = new DataRace("矮人");
|
||||
// 种族属性加成 力量+2 体质+2 感知+1
|
||||
race.Str = 2; race.Con = 2; race.Wis = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半兽人(Orc) </summary>
|
||||
public static DataRace Orc() {
|
||||
DataRace race = new DataRace("半兽人");
|
||||
// 种族属性加成 力量+3 体质+2
|
||||
race.Str = 3; race.Con = 2;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半身人(Halfling) </summary>
|
||||
public static DataRace Halfling() {
|
||||
DataRace race = new DataRace("半身人");
|
||||
// 种族属性加成 敏捷+2 魅力+2 体质+1
|
||||
race.Dex = 2; race.Cha = 2; race.Con = 1;
|
||||
return race;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 数据
|
||||
/// </summary>
|
||||
public class DataAttribute {
|
||||
/// <summary> 力量(strength) </summary>
|
||||
public virtual int Str { get; set; }
|
||||
/// <summary> 敏捷(dexterity) </summary>
|
||||
public virtual int Dex { get; set; }
|
||||
/// <summary> 体质(constitution) </summary>
|
||||
public virtual int Con { get; set; }
|
||||
/// <summary> 智力(intelligence) </summary>
|
||||
public virtual int Int { get; set; }
|
||||
/// <summary> 感知(wisdom) </summary>
|
||||
public virtual int Wis { get; set; }
|
||||
/// <summary> 魅力(charisma) </summary>
|
||||
public virtual int Cha { get; set; }
|
||||
|
||||
/// <summary> 力量调整值(strength) </summary>
|
||||
public int StrModifier => AttributeTool.Modifier(Str);
|
||||
/// <summary> 敏捷调整值(dexterity) </summary>
|
||||
public int DexModifier => AttributeTool.Modifier(Dex);
|
||||
/// <summary> 体质调整值(constitution) </summary>
|
||||
public int ConModifier => AttributeTool.Modifier(Con);
|
||||
/// <summary> 智力调整值(intelligence) </summary>
|
||||
public int IntModifier => AttributeTool.Modifier(Int);
|
||||
/// <summary> 感知调整值(wisdom) </summary>
|
||||
public int WisModifier => AttributeTool.Modifier(Wis);
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => AttributeTool.Modifier(Cha);
|
||||
}
|
||||
/// <summary>
|
||||
/// 角色 - 数据
|
||||
/// </summary>
|
||||
public class DataCharacter : DataAttribute {
|
||||
/// <summary> 名字 </summary>
|
||||
public string name;
|
||||
/// <summary> 经验 </summary>
|
||||
public int expPoint;
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race;
|
||||
/// <summary> 属性 </summary>
|
||||
public DataAttribute basis;
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession;
|
||||
/// <summary> 装备 </summary>
|
||||
public DataEquipment equipment;
|
||||
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int Level => CharacterTool.GetLevel(this);
|
||||
/// <summary> 生命点 </summary>
|
||||
public int HitPoint => CharacterTool.GetHitPoint(this);
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int ArmorClass => CharacterTool.GetArmorClass(this);
|
||||
|
||||
/// <summary> 力量(strength) 基础值 + 种族加值 </summary>
|
||||
public override int Str { get => basis.Str + race.Str; }
|
||||
/// <summary> 敏捷(dexterity) 基础值 + 种族加值 </summary>
|
||||
public override int Dex { get => basis.Dex + race.Dex; }
|
||||
/// <summary> 体质(constitution) 基础值 + 种族加值 </summary>
|
||||
public override int Con { get => basis.Con + race.Con; }
|
||||
/// <summary> 智力(intelligence) 基础值 + 种族加值 </summary>
|
||||
public override int Int { get => basis.Int + race.Int; }
|
||||
/// <summary> 感知(wisdom) 基础值 + 种族加值 </summary>
|
||||
public override int Wis { get => basis.Wis + race.Wis; }
|
||||
/// <summary> 魅力(charisma) 基础值 + 种族加值 </summary>
|
||||
public override int Cha { get => basis.Cha + race.Cha; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 种族 - 数据
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public string name;
|
||||
}
|
||||
/// <summary>
|
||||
/// 职业 - 数据
|
||||
/// </summary>
|
||||
public class DataProfession {
|
||||
/// <summary> 职业名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public int hitDice = 0;
|
||||
/// <summary> 角色 </summary>
|
||||
public DataCharacter character;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 库存
|
||||
/// </summary>
|
||||
public class DataEquipment {
|
||||
/// <summary> 武器1 </summary>
|
||||
public DataWeapon weapon1;
|
||||
/// <summary> 武器2 </summary>
|
||||
public DataWeapon weapon2;
|
||||
/// <summary> 护甲 </summary>
|
||||
public DataArmor armor;
|
||||
/// <summary> 头盔 </summary>
|
||||
public DataWear helmets;
|
||||
/// <summary> 手套 </summary>
|
||||
public DataWear gloves;
|
||||
/// <summary> 鞋子 </summary>
|
||||
public DataWear shoes;
|
||||
|
||||
/// <summary> 附加效果 </summary>
|
||||
public DataAddition addition = new DataAddition();
|
||||
}
|
||||
/// <summary>
|
||||
/// 附加 - 数据
|
||||
/// </summary>
|
||||
public class DataAddition {
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int armorClass = 0;
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public List<DataDamageDice> damageDices = new List<DataDamageDice>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 伤害类型
|
||||
/// </summary>
|
||||
public enum DamageType { 穿刺, 挥砍, 钝击 }
|
||||
/// <summary>
|
||||
/// 伤害 - 数据
|
||||
/// </summary>
|
||||
public class DataDamageDice {
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public readonly int dice;
|
||||
/// <summary> 伤害类型 </summary>
|
||||
public readonly DamageType damageType;
|
||||
|
||||
public DataDamageDice(int dice, DamageType damageType) {
|
||||
this.dice = dice;
|
||||
this.damageType = damageType;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c500c73626d889c4c8cac76a53f95b2d
|
||||
guid: 62fae57d4dbef374ba92424caa7b6885
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
+14
-7
@@ -2,19 +2,26 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 库存类型枚举,区分背包、仓库等不同库存。
|
||||
/// </summary>
|
||||
public enum InventoryType { EquipmentSlot, Backpack, Storage }
|
||||
/// <summary>
|
||||
/// 物品库存 - 数据
|
||||
/// </summary>
|
||||
public abstract class DataInventory {
|
||||
/// <summary> 库存类型 </summary>
|
||||
public InventoryType inventoryType;
|
||||
|
||||
/// <summary> 添加物品 </summary>
|
||||
public abstract bool Add(DataItem item);
|
||||
/// <summary> 移除物品 </summary>
|
||||
public abstract bool Remove(DataItem item);
|
||||
}
|
||||
/// <summary>
|
||||
/// 库存类型枚举,区分背包、仓库等不同库存。
|
||||
/// 仓库 - 库存
|
||||
/// </summary>
|
||||
public enum InventoryType { EquipmentSlot, Backpack, Storage }
|
||||
public class DataStorage : DataInventory {
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 背包 - 库存
|
||||
/// </summary>
|
||||
public class DataBackpack : DataInventory {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor.EditorTools;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 物品类型
|
||||
/// </summary>
|
||||
public enum ItemType { 材料, 装备 }
|
||||
/// <summary>
|
||||
/// 物品 - 数据
|
||||
/// </summary>
|
||||
public class DataItem {
|
||||
/// <summary> 物品名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 物品类型 </summary>
|
||||
public ItemType itemType;
|
||||
}
|
||||
/// <summary>
|
||||
/// 材料 - 数据
|
||||
/// </summary>
|
||||
public class DataMaterial : DataItem {
|
||||
/// <summary> 物品数量 </summary>
|
||||
public int quantity;
|
||||
/// <summary> 堆叠上限 </summary>
|
||||
public int maxStack;
|
||||
}
|
||||
/// <summary>
|
||||
/// 穿戴类型
|
||||
/// </summary>
|
||||
public enum WearType { 武器, 护甲, 头盔, 手套, 鞋子, }
|
||||
/// <summary>
|
||||
/// 穿戴 - 数据
|
||||
/// </summary>
|
||||
public class DataWear : DataItem {
|
||||
/// <summary> 装备类型 </summary>
|
||||
public WearType wearType;
|
||||
/// <summary> 附加列表 </summary>
|
||||
public List<DataAddition> additions = new List<DataAddition>();
|
||||
/// <summary> 附加效果 </summary>
|
||||
public virtual DataAddition Addition => EquipmentTool.Merge(additions);
|
||||
}
|
||||
/// <summary>
|
||||
/// 武器类型。
|
||||
/// </summary>
|
||||
public enum WeaponType { 轻型武器, 中型武器, 重型武器, 盾牌, }
|
||||
/// <summary>
|
||||
/// 武器 - 数据
|
||||
/// </summary>
|
||||
public class DataWeapon : DataWear {
|
||||
/// <summary> 武器类型 </summary>
|
||||
public WeaponType weaponType;
|
||||
}
|
||||
/// <summary>
|
||||
/// 护甲类型。
|
||||
/// </summary>
|
||||
public enum ArmorType { 布甲, 轻甲, 中甲, 重甲, }
|
||||
/// <summary>
|
||||
/// 护甲 - 数据
|
||||
/// </summary>
|
||||
public class DataArmor : DataWear {
|
||||
/// <summary> 护甲类型 </summary>
|
||||
public ArmorType armorType;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class DataBackpack : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f54ab1b3cd1a8f4d9ec1fb975e05ef6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,87 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 数据
|
||||
/// </summary>
|
||||
public class DataEquipmentSlot : DataInventory {
|
||||
/// <summary> 武器1 </summary>
|
||||
public DataWeapon weapon1;
|
||||
/// <summary> 武器2 </summary>
|
||||
public DataWeapon weapon2;
|
||||
/// <summary> 护甲 </summary>
|
||||
public DataArmor armor;
|
||||
/// <summary> 头盔 </summary>
|
||||
public DataEquipment helmets;
|
||||
/// <summary> 手套 </summary>
|
||||
public DataEquipment gloves;
|
||||
/// <summary> 鞋子 </summary>
|
||||
public DataEquipment shoes;
|
||||
|
||||
public override bool Add(DataItem item) {
|
||||
// 如果是武器,则尝试装备
|
||||
if (item is DataWeapon weapon) { return Wear(weapon); }
|
||||
// 如果是护甲,则尝试装备
|
||||
if (item is DataArmor armor) { return Wear(armor); }
|
||||
// 如果是其他,则尝试装备
|
||||
if (item is DataEquipment equipment) { return Wear(equipment); }
|
||||
return false;
|
||||
}
|
||||
public override bool Remove(DataItem item) {
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public int GetArmorClass(int modifier) {
|
||||
int addValue = GetAddValue();
|
||||
// 无甲 基础AC = 10,调整值全额生效
|
||||
if (armor == null) { return 10 + modifier + addValue; }
|
||||
// 布甲 调整值全额生效
|
||||
if (armor.armorType == ArmorType.ClothArmor) { }
|
||||
// 轻甲 调整值全额生效
|
||||
if (armor.armorType == ArmorType.LightArmor) { }
|
||||
// 中甲 调整值上限=2
|
||||
if (armor.armorType == ArmorType.MediumArmor) { modifier = Mathf.Min(modifier, 2); }
|
||||
// 重甲 调整值无效
|
||||
if (armor.armorType == ArmorType.HeavyArmor) { modifier = 0; }
|
||||
// 基础AC + 调整值 + 附加值
|
||||
return GetArmorClass(armor) + modifier + addValue;
|
||||
}
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public int GetArmorClass(DataEquipment equipment) {
|
||||
return equipment.Addition().armorClass;
|
||||
}
|
||||
/// <summary> 获取护甲加值 </summary>
|
||||
public int GetAddValue() {
|
||||
int addValue = 0;
|
||||
// 武器1 加值
|
||||
if (weapon1 != null) { addValue += GetArmorClass(weapon1); }
|
||||
// 武器2 加值
|
||||
if (weapon2 != null) { addValue += GetArmorClass(weapon2); }
|
||||
// 头盔 加值
|
||||
if (helmets != null) { addValue += GetArmorClass(helmets); }
|
||||
// 手套 加值
|
||||
if (gloves != null) { addValue += GetArmorClass(gloves); }
|
||||
// 鞋子 加值
|
||||
if (shoes != null) { addValue += GetArmorClass(shoes); }
|
||||
return addValue;
|
||||
}
|
||||
|
||||
#region 穿戴
|
||||
private bool Wear(DataWeapon weapon) {
|
||||
weapon1 = weapon;
|
||||
return true;
|
||||
}
|
||||
private bool Wear(DataArmor armor) {
|
||||
this.armor = armor;
|
||||
return true;
|
||||
}
|
||||
private bool Wear(DataEquipment equipment) {
|
||||
if (equipment.equipmentType == EquipmentType.Helmets) { helmets = equipment; return true; }
|
||||
if (equipment.equipmentType == EquipmentType.Gloves) { gloves = equipment; return true; }
|
||||
if (equipment.equipmentType == EquipmentType.Shoes) { shoes = equipment; return true; }
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83edeb48630d62a44a8d7c7551e9f0fb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,18 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class DataStorage : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 943f05d3866fd8e4cb463a4f0597d0c5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: da6831802283b3643bf03d784ccc5813
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,24 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 护甲类型。
|
||||
/// </summary>
|
||||
public enum ArmorType {
|
||||
/// <summary> 布甲 </summary>
|
||||
ClothArmor,
|
||||
/// <summary> 轻甲 </summary>
|
||||
LightArmor,
|
||||
/// <summary> 中甲 </summary>
|
||||
MediumArmor,
|
||||
/// <summary> 重甲 </summary>
|
||||
HeavyArmor,
|
||||
}
|
||||
/// <summary>
|
||||
/// 护甲 - 数据
|
||||
/// </summary>
|
||||
public class DataArmor : DataEquipment {
|
||||
/// <summary> 护甲类型 </summary>
|
||||
public ArmorType armorType;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 062eefbb65fcc2e44aa8f4fe25fe7ab8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备类型。
|
||||
/// </summary>
|
||||
public enum EquipmentType {
|
||||
/// <summary> 武器 </summary>
|
||||
Weapon,
|
||||
/// <summary> 护甲 </summary>
|
||||
Armor,
|
||||
/// <summary> 头盔 </summary>
|
||||
Helmets,
|
||||
/// <summary> 手套 </summary>
|
||||
Gloves,
|
||||
/// <summary> 鞋子 </summary>
|
||||
Shoes,
|
||||
}
|
||||
/// <summary>
|
||||
/// 装备 - 数据
|
||||
/// </summary>
|
||||
public class DataEquipment : DataItem {
|
||||
/// <summary> 装备类型 </summary>
|
||||
public EquipmentType equipmentType;
|
||||
/// <summary> 附加效果 </summary>
|
||||
public List<DataAddition> additions;
|
||||
|
||||
/// <summary> 附加效果 </summary>
|
||||
public DataAddition Addition() {
|
||||
DataAddition addition = new DataAddition();
|
||||
additions.ForEach(obj => addition.Add(obj));
|
||||
return addition;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 物品类型。
|
||||
/// </summary>
|
||||
public enum ItemType {
|
||||
/// <summary> 材料 </summary>
|
||||
Material,
|
||||
/// <summary> 装备 </summary>
|
||||
Equipment
|
||||
}
|
||||
/// <summary>
|
||||
/// 物品 - 数据
|
||||
/// </summary>
|
||||
public class DataItem {
|
||||
/// <summary> 物品名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 物品类型 </summary>
|
||||
public ItemType itemType;
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 材料 - 数据
|
||||
/// </summary>
|
||||
public class DataMaterial : DataItem {
|
||||
/// <summary> 物品数量 </summary>
|
||||
public int quantity;
|
||||
/// <summary> 堆叠上限 </summary>
|
||||
public int maxStack;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8fb2ebbb537271478ec399677a1b08a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,24 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 武器类型。
|
||||
/// </summary>
|
||||
public enum WeaponType {
|
||||
/// <summary> 轻型武器 </summary>
|
||||
LightWeapon,
|
||||
/// <summary> 中型武器 </summary>
|
||||
MediumWeapon,
|
||||
/// <summary> 重型武器 </summary>
|
||||
HeavyWeapon,
|
||||
/// <summary> 盾牌 </summary>
|
||||
Shield,
|
||||
}
|
||||
/// <summary>
|
||||
/// 武器 - 数据
|
||||
/// </summary>
|
||||
public class DataWeapon : DataEquipment {
|
||||
/// <summary> 武器类型 </summary>
|
||||
public WeaponType weaponType;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0be9cb0c2accc804eb824de0e8ca3fa5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -26,7 +26,7 @@ public class BattleCharacter : DataAttribute {
|
||||
|
||||
public BattleCharacter(DataCharacter character, int team) {
|
||||
this.character = character;
|
||||
Cover(character);
|
||||
AttributeTool.Cover(this, character);
|
||||
this.team = team;
|
||||
name = character.name;
|
||||
level = character.Level;
|
||||
@@ -35,8 +35,12 @@ public class BattleCharacter : DataAttribute {
|
||||
armorClass = character.ArmorClass;
|
||||
}
|
||||
|
||||
/// <summary> 攻击目标 </summary>
|
||||
public bool AttackTarget(BattleCharacter target) {
|
||||
/// <summary> 是否允许行动 </summary>
|
||||
public bool IsAction() {
|
||||
return hitPoint.x > 0;
|
||||
}
|
||||
/// <summary> 是否敌对目标 </summary>
|
||||
public bool IsHostility(BattleCharacter target) {
|
||||
return team != target.team && target.hitPoint.x > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@ using UnityEngine;
|
||||
/// 行动阶段
|
||||
/// </summary>
|
||||
public class PhaseAction : BattlePhase {
|
||||
/// <summary> 当前行动 </summary>
|
||||
private BattleCharacter currentAction;
|
||||
/// <summary> 当前目标 </summary>
|
||||
private BattleCharacter currentTarget;
|
||||
|
||||
public PhaseAction(BattleSimulator simulator) : base(simulator) { }
|
||||
|
||||
@@ -13,14 +17,23 @@ public class PhaseAction : BattlePhase {
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
public override void UpdatePhase() {
|
||||
// 选择行动目标,没有行动目标则进入结算阶段
|
||||
if (!BattleQueue.Dequeue(out BattleCharacter character)) { simulator.Transition(PhaseType.结算阶段); return; }
|
||||
// 判断是否可以行动
|
||||
if (ActionPredicate(character)) { return; }
|
||||
// 选择一个可以攻击的目标
|
||||
BattleCharacter target = BattleQueue.FirstOrDefault(obj => character.AttackTarget(obj));
|
||||
// 对目标进行攻击
|
||||
|
||||
// 选择行动的角色,如果没有则进入下一轮
|
||||
if (!SelectAction()) { return; }
|
||||
// 选择攻击的目标,如果没有目标则结算战斗
|
||||
if (!SelectTarget()) { return; }
|
||||
// 命中检定
|
||||
int hit = Dice.Roll20(currentAction.DexModifier);
|
||||
int ac = currentTarget.armorClass;
|
||||
bool isHit = hit > ac;
|
||||
// 伤害计算
|
||||
if (isHit) {
|
||||
int damage = Dice.Roll8(currentAction.StrModifier);
|
||||
currentTarget.hitPoint.x -= damage;
|
||||
Debug.Log($"{currentAction.name}使用 普通攻击({hit}) 对 {currentTarget.name}({ac}) 造成 {damage} 点伤害!");
|
||||
}
|
||||
else {
|
||||
Debug.Log($"{currentAction.name}使用 普通攻击({hit}) 对 {currentTarget.name}({ac}) 未命中!");
|
||||
}
|
||||
// TODO:记录器
|
||||
// Debug.Log($"正式回合:{roundCount}");
|
||||
}
|
||||
@@ -28,9 +41,20 @@ public class PhaseAction : BattlePhase {
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary> 行动判断 </summary>
|
||||
private bool ActionPredicate(BattleCharacter character) {
|
||||
return character.hitPoint.x > 0;
|
||||
/// <summary> 选择当前行动角色 </summary>
|
||||
private bool SelectAction() {
|
||||
// 选择行动的角色,如果没有则进入下一回合
|
||||
if (!BattleQueue.Dequeue(out currentAction)) { simulator.Transition(PhaseType.回合阶段); return false; }
|
||||
// 判断是否可以行动
|
||||
if (!currentAction.IsAction()) { return false; }
|
||||
return true;
|
||||
}
|
||||
/// <summary> 选择当前目标角色 </summary>
|
||||
private bool SelectTarget() {
|
||||
// 选择一个可以攻击的目标
|
||||
currentTarget = BattleQueue.FirstOrDefault(obj => currentAction.IsHostility(obj));
|
||||
// 如果没有可以攻击的目标则结算战斗
|
||||
if (currentTarget == null) { simulator.Transition(PhaseType.结算阶段); }
|
||||
return currentTarget != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,12 +10,12 @@ public class PhaseAssault : BattlePhase {
|
||||
public PhaseAssault(BattleSimulator simulator) : base(simulator) { }
|
||||
|
||||
public override void StartPhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
public override void UpdatePhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
public override void QuitPhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,12 +10,16 @@ public class PhaseFinish : BattlePhase {
|
||||
public PhaseFinish(BattleSimulator simulator) : base(simulator) { }
|
||||
|
||||
public override void StartPhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// TODO:记录器
|
||||
Debug.Log("结束战斗!");
|
||||
}
|
||||
public override void UpdatePhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// TODO:需要添加结算判断
|
||||
// simulator.Transition(PhaseType.回合阶段);
|
||||
// TODO:记录器
|
||||
|
||||
}
|
||||
public override void QuitPhase() {
|
||||
throw new System.NotImplementedException();
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,9 @@ public class PhaseFormal : BattlePhase {
|
||||
simulator.Transition(PhaseType.行动阶段);
|
||||
// TODO:记录器
|
||||
Debug.Log($"正式回合:{roundCount}");
|
||||
string message = "存活";
|
||||
BattleQueue.ForEach(obj => message += $" {obj.name}({obj.hitPoint.x})");
|
||||
Debug.Log(message);
|
||||
}
|
||||
public override void QuitPhase() {
|
||||
// throw new System.NotImplementedException();
|
||||
|
||||
@@ -18,7 +18,9 @@ public class PhaseInitiative : BattlePhase {
|
||||
// TODO:需要添加突袭阶段
|
||||
simulator.Transition(PhaseType.回合阶段);
|
||||
// TODO:记录器
|
||||
Debug.Log("先攻");
|
||||
string message = "先攻";
|
||||
BattleQueue.ForEach(obj => message += $" {obj.name}({obj.sequence})");
|
||||
Debug.Log(message);
|
||||
}
|
||||
public override void QuitPhase() {
|
||||
// throw new System.NotImplementedException();
|
||||
|
||||
@@ -9,7 +9,6 @@ using UnityEngine;
|
||||
/// 战斗 - 模拟器
|
||||
/// </summary>
|
||||
public class BattleSimulator {
|
||||
|
||||
/// <summary> 战斗队列 </summary>
|
||||
public BattleQueue battleQueue = new BattleQueue();
|
||||
|
||||
@@ -19,6 +18,9 @@ public class BattleSimulator {
|
||||
public Dictionary<PhaseType, IPhase> dictionary = new Dictionary<PhaseType, IPhase>();
|
||||
|
||||
public BattleSimulator(BattleTeam team1, BattleTeam team2) {
|
||||
team1.Initial(1);
|
||||
team2.Initial(2);
|
||||
|
||||
battleQueue.Add(team1.battles);
|
||||
battleQueue.Add(team2.battles);
|
||||
|
||||
@@ -27,6 +29,8 @@ public class BattleSimulator {
|
||||
dictionary.Add(PhaseType.回合阶段, new PhaseFormal(this));
|
||||
dictionary.Add(PhaseType.行动阶段, new PhaseAction(this));
|
||||
dictionary.Add(PhaseType.结算阶段, new PhaseFinish(this));
|
||||
|
||||
Transition(PhaseType.先攻阶段);
|
||||
}
|
||||
public void Update() {
|
||||
currentPhase?.UpdatePhase();
|
||||
@@ -40,7 +44,7 @@ public class BattleSimulator {
|
||||
currentPhase?.QuitPhase();
|
||||
currentPhase = newPhase;
|
||||
currentPhase?.StartPhase();
|
||||
Debug.Log($"战斗阶段已转换为: {phaseType}");
|
||||
// Debug.Log($"战斗阶段已转换为: {phaseType}");
|
||||
}
|
||||
else {
|
||||
// 不存在时输出警告信息
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e350f02da82dedd459ba3280f586d116
|
||||
guid: 1f85c0d8dce903b4eb5fb0aca37d2040
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 工具
|
||||
/// </summary>
|
||||
public static class AttributeTool {
|
||||
|
||||
#region 创建
|
||||
/// <summary> 随机初始属性 </summary>
|
||||
public static DataAttribute Random() {
|
||||
DataAttribute attribute = new DataAttribute();
|
||||
attribute.Str = Dice.RollAttribute();
|
||||
attribute.Dex = Dice.RollAttribute();
|
||||
attribute.Con = Dice.RollAttribute();
|
||||
attribute.Int = Dice.RollAttribute();
|
||||
attribute.Wis = Dice.RollAttribute();
|
||||
attribute.Cha = Dice.RollAttribute();
|
||||
return attribute;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 扩展
|
||||
// 计算属性调整值(属性值-10)/2 向下取整
|
||||
public static int Modifier(int value) {
|
||||
return (int)System.Math.Floor((value - 10) / 2.0);
|
||||
}
|
||||
/// <summary> 添加属性 </summary>
|
||||
public static void Add(this DataAttribute a, DataAttribute b) {
|
||||
a.Str += b.Str; a.Dex += b.Dex;
|
||||
a.Con += b.Con; a.Int += b.Int;
|
||||
a.Wis += b.Wis; a.Cha += b.Cha;
|
||||
}
|
||||
/// <summary> 减少属性 </summary>
|
||||
public static void Sub(this DataAttribute a, DataAttribute b) {
|
||||
a.Str -= b.Str; a.Dex -= b.Dex;
|
||||
a.Con -= b.Con; a.Int -= b.Int;
|
||||
a.Wis -= b.Wis; a.Cha -= b.Cha;
|
||||
}
|
||||
/// <summary> 覆盖属性 </summary>
|
||||
public static void Cover(this DataAttribute a, DataAttribute b) {
|
||||
a.Str = b.Str; a.Dex = b.Dex;
|
||||
a.Con = b.Con; a.Int = b.Int;
|
||||
a.Wis = b.Wis; a.Cha = b.Cha;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fd9942ce333fa94aa2297f3569a4939
|
||||
guid: f6a814b3a3b754241ae35753e6d7c7f8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -0,0 +1,81 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 角色工具
|
||||
/// </summary>
|
||||
public static class CharacterTool {
|
||||
|
||||
#region 设置参数
|
||||
/// <summary> 设置职业 </summary>
|
||||
public static void Settings(this DataCharacter character, DataRace race) {
|
||||
character.race = race;
|
||||
}
|
||||
/// <summary> 设置职业 </summary>
|
||||
public static void Settings(this DataCharacter character, DataProfession profession) {
|
||||
character.profession = profession;
|
||||
profession.character = character;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 属性扩展
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public static int GetLevel(this DataCharacter character) {
|
||||
// TODO:需要补充多职业的等级总和
|
||||
return character.profession.level;
|
||||
}
|
||||
/// <summary> 生命点 </summary>
|
||||
public static int GetHitPoint(this DataCharacter character) {
|
||||
// TODO:需要补充多职业的生命值加成
|
||||
return character.profession.HitPoint();
|
||||
}
|
||||
/// <summary> 计算护甲等级(AC) </summary>
|
||||
public static int GetArmorClass(this DataCharacter character) {
|
||||
// TODO:需要补充专长,技能,熟练之类的加值
|
||||
int modifier = character.DexModifier;
|
||||
return character.equipment.ArmorClass(modifier);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 创建角色
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
public static DataCharacter Create(string name) {
|
||||
DataCharacter character = new DataCharacter();
|
||||
character.name = name;
|
||||
character.race = RaceTool.None();
|
||||
character.basis = AttributeTool.Random();
|
||||
character.profession = ProfessionTool.None();
|
||||
character.profession.Initial(character);
|
||||
character.equipment = new DataEquipment();
|
||||
return character;
|
||||
}
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
public static DataCharacter Create(string name, DataRace race, DataProfession profession) {
|
||||
DataCharacter character = new DataCharacter();
|
||||
character.name = name;
|
||||
character.race = race;
|
||||
character.basis = AttributeTool.Random();
|
||||
character.profession = profession;
|
||||
character.profession.Initial(character);
|
||||
character.equipment = new DataEquipment();
|
||||
return character;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 打印角色卡
|
||||
public static void PrintCharacterSheet(this DataCharacter character) {
|
||||
Debug.Log($"=== {character.name} LV{character.Level} ===");
|
||||
Debug.Log($"种族: {character.race.name}");
|
||||
Debug.Log($"职业: {character.profession.name}");
|
||||
Debug.Log($"力量: {character.Str} ({character.StrModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"敏捷: {character.Dex} ({character.DexModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"体质: {character.Con} ({character.ConModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"智力: {character.Int} ({character.IntModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"感知: {character.Wis} ({character.WisModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"魅力: {character.Cha} ({character.ChaModifier.ToString("+#;-#;+0")})");
|
||||
Debug.Log($"经验值: {character.expPoint}");
|
||||
Debug.Log($"生命值: {character.HitPoint}");
|
||||
Debug.Log($"护甲等级: {character.ArmorClass})");
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb070bc540efae048ae79c8319c0c0e2
|
||||
guid: a6bdd4c70e0068d4dbe460c7a6961901
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
+31
-34
@@ -4,46 +4,42 @@ using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 职业 - 数据
|
||||
/// 种族 - 工具
|
||||
/// </summary>
|
||||
public class DataProfession {
|
||||
/// <summary> 职业名称 </summary>
|
||||
public readonly string name;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public readonly int hitDice = 0;
|
||||
/// <summary> 角色 </summary>
|
||||
public DataCharacter character;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
public static class ProfessionTool {
|
||||
|
||||
public DataProfession(string name, int hitDice) {
|
||||
this.name = name;
|
||||
this.hitDice = hitDice;
|
||||
}
|
||||
#region 扩展
|
||||
/// <summary> 初始:满生命骰子 + 体质调整值 </summary>
|
||||
public void Initial(DataCharacter character) {
|
||||
this.character = character;
|
||||
level = 1;
|
||||
// 初始生命 =
|
||||
hitPoints = new List<int>();
|
||||
hitPoints.Add(hitDice + character.ConModifier);
|
||||
public static void Initial(this DataProfession profession, DataCharacter character) {
|
||||
profession.character = character;
|
||||
int hitPoint = profession.hitDice + character.ConModifier;
|
||||
profession.level = 1;
|
||||
profession.hitPoints = new List<int> { hitPoint };
|
||||
}
|
||||
/// <summary> 升级:骰生命骰子 + 体质调整值 </summary>
|
||||
public void Upgrade() {
|
||||
level++;
|
||||
int hitPoint = Dice.Roll(hitDice) + character.ConModifier;
|
||||
hitPoints.Add(hitPoint);
|
||||
public static void Upgrade(this DataProfession profession) {
|
||||
profession.level++;
|
||||
int hitPoint = Dice.Roll(profession.hitDice);
|
||||
int modifier = profession.character.ConModifier;
|
||||
profession.hitPoints.Add(hitPoint + modifier);
|
||||
}
|
||||
/// <summary> 生命点:每级生命点总和 </summary>
|
||||
public int HitPoint() {
|
||||
return hitPoints.Sum();
|
||||
public static int HitPoint(this DataProfession profession) {
|
||||
return profession.hitPoints.Sum();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 创建
|
||||
/// <summary> 创建 </summary>
|
||||
public static DataProfession Create(string name, int hitDice) {
|
||||
DataProfession profession = new DataProfession { name = name, hitDice = hitDice };
|
||||
profession.name = name;
|
||||
profession.hitDice = hitDice;
|
||||
return profession;
|
||||
}
|
||||
/// <summary> 无职业 1d4 </summary>
|
||||
public static DataProfession None() {
|
||||
return new DataProfession("无", 4);
|
||||
return Create("无", 4);
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataProfession Random() {
|
||||
@@ -57,22 +53,23 @@ public class DataProfession {
|
||||
}
|
||||
/// <summary> 战士 1d10 </summary>
|
||||
public static DataProfession Warrior() {
|
||||
return new DataProfession("战士", 10);
|
||||
return Create("战士", 10);
|
||||
}
|
||||
/// <summary> 法师 1d6 </summary>
|
||||
public static DataProfession Wizard() {
|
||||
return new DataProfession("法师", 6);
|
||||
return Create("法师", 6);
|
||||
}
|
||||
/// <summary> 牧师 1d8 </summary>
|
||||
public static DataProfession Cleric() {
|
||||
return new DataProfession("牧师", 8);
|
||||
return Create("牧师", 8);
|
||||
}
|
||||
/// <summary> 游侠 1d8 </summary>
|
||||
public static DataProfession Ranger() {
|
||||
return new DataProfession("游侠", 8);
|
||||
return Create("游侠", 8);
|
||||
}
|
||||
/// <summary> 歌者 1d6 </summary>
|
||||
public static DataProfession Chanter() {
|
||||
return new DataProfession("歌者", 6);
|
||||
return Create("歌者", 6);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 451b46f5359088a46bc1efc7fcf7ff7b
|
||||
guid: bd48318dcbe216449a81d70622f8ba35
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 种族 - 工具
|
||||
/// </summary>
|
||||
public static class RaceTool {
|
||||
|
||||
#region 创建
|
||||
// 混血人类,木精灵,丘陵矮人(Hill Dwarf),龙裔,半精灵
|
||||
/// <summary> 无种族 </summary>
|
||||
public static DataRace None() {
|
||||
return new DataRace { name = "未知" };
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataRace Random() {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Human(); }
|
||||
if (index == 2) { return Elven(); }
|
||||
if (index == 3) { return Dwarf(); }
|
||||
if (index == 4) { return Orc(); }
|
||||
if (index == 5) { return Halfling(); }
|
||||
return None();
|
||||
}
|
||||
/// <summary> 人类(Human) 全属性+1 </summary>
|
||||
public static DataRace Human() {
|
||||
return new DataRace { name = "人类", Str = 1, Dex = 1, Con = 1, Int = 1, Wis = 1, Cha = 1 };
|
||||
}
|
||||
/// <summary> 精灵(Elven) 敏捷+2 智力+2 感知+1 </summary>
|
||||
public static DataRace Elven() {
|
||||
return new DataRace { name = "精灵", Dex = 2, Int = 2, Wis = 1 };
|
||||
}
|
||||
/// <summary> 矮人(Dwarf) 力量+2 体质+2 感知+1 </summary>
|
||||
public static DataRace Dwarf() {
|
||||
return new DataRace { name = "矮人", Str = 2, Con = 2, Wis = 1 };
|
||||
}
|
||||
/// <summary> 半兽人(Orc) 力量+3 体质+2 </summary>
|
||||
public static DataRace Orc() {
|
||||
return new DataRace { name = "半兽人", Str = 3, Con = 2 };
|
||||
}
|
||||
/// <summary> 半身人(Halfling) 敏捷+2 魅力+2 体质+1 </summary>
|
||||
public static DataRace Halfling() {
|
||||
return new DataRace { name = "半身人", Dex = 2, Cha = 2, Con = 1 };
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e444293bdefc67346a3d80901305e4c7
|
||||
guid: 9694db834fdbe8744882901e02003034
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 31e213ee804e43848b56cd336a8025d4
|
||||
guid: c29e0b5bff9f654439aa3e867ac20484
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备 - 字典
|
||||
/// </summary>
|
||||
public static class ArmorDictionary {
|
||||
/// <summary> 武器 </summary>
|
||||
public static DataArmor Armor(string name, ArmorType armorType) {
|
||||
DataArmor armor = new DataArmor();
|
||||
armor.name = name;
|
||||
armor.itemType = ItemType.装备;
|
||||
armor.wearType = WearType.护甲;
|
||||
armor.armorType = armorType;
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 法师袍 ac10 </summary>
|
||||
public static DataArmor Armor101() {
|
||||
DataArmor armor = Armor("法师袍", ArmorType.布甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 10 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 皮甲 ac11 </summary>
|
||||
public static DataArmor Armor201() {
|
||||
DataArmor armor = Armor("皮甲", ArmorType.轻甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 11 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 链甲 ac15 </summary>
|
||||
public static DataArmor Armor301() {
|
||||
DataArmor armor = Armor("链甲", ArmorType.中甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 15 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 板甲 ac18 </summary>
|
||||
public static DataArmor Armor401() {
|
||||
DataArmor armor = Armor("板甲", ArmorType.重甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 18 });
|
||||
return armor;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f13627182bd77434991f32751b8c15f7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,106 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 工具
|
||||
/// </summary>
|
||||
public static class EquipmentTool {
|
||||
|
||||
#region 附加
|
||||
/// <summary> 添加属性 </summary>
|
||||
public static void Add(this DataAddition a, DataAddition b) {
|
||||
a.armorClass += b.armorClass;
|
||||
a.damageDices.AddRange(b.damageDices);
|
||||
}
|
||||
/// <summary> 合并属性 </summary>
|
||||
public static DataAddition Merge(List<DataAddition> additions) {
|
||||
DataAddition addition = new DataAddition();
|
||||
additions.ForEach(obj => addition.Add(obj));
|
||||
return addition;
|
||||
}
|
||||
/// <summary> 更新附加值 </summary>
|
||||
public static void UpdateAddition(this DataEquipment equipment) {
|
||||
DataAddition addition = new DataAddition();
|
||||
if (equipment.weapon1 != null) { addition.Add(equipment.weapon1.Addition); }
|
||||
if (equipment.weapon2 != null) { addition.Add(equipment.weapon2.Addition); }
|
||||
if (equipment.armor != null) { addition.Add(equipment.armor.Addition); }
|
||||
if (equipment.helmets != null) { addition.Add(equipment.helmets.Addition); }
|
||||
if (equipment.gloves != null) { addition.Add(equipment.gloves.Addition); }
|
||||
if (equipment.shoes != null) { addition.Add(equipment.shoes.Addition); }
|
||||
equipment.addition = addition;
|
||||
}
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public static int ArmorClass(this DataEquipment equipment, int modifier) {
|
||||
int addValue = equipment.addition.armorClass;
|
||||
// 无甲 基础AC = 10 + 调整值 + 附加值
|
||||
if (equipment.armor == null) { return 10 + modifier + addValue; }
|
||||
// 布甲/轻甲 调整值全额生效
|
||||
if (equipment.armor.armorType == ArmorType.布甲) { }
|
||||
// 调整值全额生效
|
||||
if (equipment.armor.armorType == ArmorType.轻甲) { }
|
||||
// 中甲 调整值上限=2
|
||||
if (equipment.armor.armorType == ArmorType.中甲) { modifier = Mathf.Min(modifier, 2); }
|
||||
// 重甲 调整值无效
|
||||
if (equipment.armor.armorType == ArmorType.重甲) { modifier = 0; }
|
||||
// 调整值 + 附加值
|
||||
return modifier + addValue;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 穿戴
|
||||
/// <summary> 穿戴装备 </summary>
|
||||
public static bool Wear(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = wear; bool isWear = false;
|
||||
if (wear.wearType == WearType.武器) { isWear = WearWeapon(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.护甲) { isWear = WearArmor(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.头盔) { isWear = WearHelmets(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.手套) { isWear = WearGloves(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.鞋子) { isWear = WearShoes(equipment, wear, out old); }
|
||||
equipment.UpdateAddition();
|
||||
return isWear;
|
||||
}
|
||||
/// <summary> 穿戴武器 </summary>
|
||||
public static bool WearWeapon(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = null;
|
||||
// 校验是否为武器类型
|
||||
if (!(wear is DataWeapon newWeapon)) { return false; }
|
||||
// 情况1:主手为空,直接装备主手
|
||||
if (equipment.weapon1 == null) { equipment.weapon1 = newWeapon; return true; }
|
||||
// 情况2:副手为空,直接装备副手
|
||||
if (equipment.weapon2 == null) { equipment.weapon2 = newWeapon; return true; }
|
||||
// 情况3:主手副手都不为空,默认替换主手
|
||||
old = equipment.weapon1;
|
||||
equipment.weapon1 = newWeapon;
|
||||
equipment.UpdateAddition();
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴护甲 </summary>
|
||||
public static bool WearArmor(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = null;
|
||||
// 校验是否为护甲类型
|
||||
if (!(wear is DataArmor newArmor)) { return false; }
|
||||
old = equipment.armor;
|
||||
equipment.armor = newArmor;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴头盔 </summary>
|
||||
public static bool WearHelmets(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.helmets;
|
||||
equipment.helmets = wear;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴手套 </summary>
|
||||
public static bool WearGloves(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.gloves;
|
||||
equipment.gloves = wear;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴鞋子 </summary>
|
||||
public static bool WearShoes(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.shoes;
|
||||
equipment.shoes = wear;
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1fd627b70f23dd44493bf8fb1e577370
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,49 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 武器 - 字典
|
||||
/// </summary>
|
||||
public static class WeaponDictionary {
|
||||
/// <summary> 武器 </summary>
|
||||
public static DataWeapon Weapon(string name, WeaponType weaponType) {
|
||||
DataWeapon weapon = new DataWeapon();
|
||||
weapon.name = name;
|
||||
weapon.itemType = ItemType.装备;
|
||||
weapon.wearType = WearType.武器;
|
||||
weapon.weaponType = weaponType;
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public static DataAddition DamageDice(int value, DamageType type) {
|
||||
DataDamageDice dice = new DataDamageDice(value, type);
|
||||
DataAddition addition = new DataAddition();
|
||||
addition.damageDices.Add(dice);
|
||||
return addition;
|
||||
}
|
||||
/// <summary> 匕首 1d4 </summary>
|
||||
public static DataWeapon Weapon101() {
|
||||
DataWeapon weapon = Weapon("匕首", WeaponType.轻型武器);
|
||||
weapon.additions.Add(DamageDice(4, DamageType.穿刺));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 木棒 1d6 </summary>
|
||||
public static DataWeapon Weapon201() {
|
||||
DataWeapon weapon = Weapon("木棒", WeaponType.中型武器);
|
||||
weapon.additions.Add(DamageDice(6, DamageType.挥砍));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 巨棒 1d8 </summary>
|
||||
public static DataWeapon Weapon301() {
|
||||
DataWeapon weapon = Weapon("巨棒", WeaponType.重型武器);
|
||||
weapon.additions.Add(DamageDice(8, DamageType.钝击));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 木盾 ac1 </summary>
|
||||
public static DataWeapon Weapon401() {
|
||||
DataWeapon weapon = Weapon("木盾", WeaponType.盾牌);
|
||||
weapon.additions.Add(new DataAddition { armorClass = 1 });
|
||||
return weapon;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32522aef438403f4d9ed01fe6650243b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -33,6 +33,6 @@ public class ManagerSimulator : ModuleSingle<ManagerSimulator> {
|
||||
}
|
||||
|
||||
private DataCharacter RandomCharacter(string name) {
|
||||
return DataCharacter.Create(name, DataRace.Random(), DataProfession.Random());
|
||||
return CharacterTool.Create(name, RaceTool.Random(), ProfessionTool.Random());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,20 @@ public static class Dice {
|
||||
public static int Roll(int value) {
|
||||
return Random.Range(1, value + 1);
|
||||
}
|
||||
/// <summary> d6 + 调整值 + 加值 </summary>
|
||||
public static int Roll6(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) {
|
||||
int d1 = Roll(6); int d2 = Roll(6);
|
||||
if (grade == DiceGrade.优势) { d1 = d1 >= d2 ? d1 : d2; }
|
||||
if (grade == DiceGrade.平势) { d1 = d1 <= d2 ? d1 : d2; }
|
||||
return d1 + modifier + addValue;
|
||||
}
|
||||
/// <summary> d8 + 调整值 + 加值 </summary>
|
||||
public static int Roll8(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) {
|
||||
int d1 = Roll(8); int d2 = Roll(8);
|
||||
if (grade == DiceGrade.优势) { d1 = d1 >= d2 ? d1 : d2; }
|
||||
if (grade == DiceGrade.平势) { d1 = d1 <= d2 ? d1 : d2; }
|
||||
return d1 + modifier + addValue;
|
||||
}
|
||||
/// <summary> d20 + 调整值 + 加值 </summary>
|
||||
public static int Roll20(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) {
|
||||
int d1 = Roll(20); int d2 = Roll(20);
|
||||
|
||||
@@ -122,50 +122,6 @@ NavMeshSettings:
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &169597751
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 169597752}
|
||||
- component: {fileID: 169597753}
|
||||
m_Layer: 0
|
||||
m_Name: ManagerSimulator
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &169597752
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 169597751}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1439912283}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &169597753
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 169597751}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3ce4cafcd40fff3428928289fa060de4, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &670296962
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -437,7 +393,7 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1439912283}
|
||||
- component: {fileID: 1439912284}
|
||||
- component: {fileID: 1439912285}
|
||||
m_Layer: 0
|
||||
m_Name: "----\u5168\u5C40\u7BA1\u7406----"
|
||||
m_TagString: Untagged
|
||||
@@ -461,10 +417,9 @@ Transform:
|
||||
- {fileID: 963194228}
|
||||
- {fileID: 705507995}
|
||||
- {fileID: 1586181182}
|
||||
- {fileID: 169597752}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1439912284
|
||||
--- !u!114 &1439912285
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -473,7 +428,7 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 1439912282}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 50f6b4ec374a86846b626668e0b5627e, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 3ce4cafcd40fff3428928289fa060de4, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1586181179
|
||||
|
||||
Reference in New Issue
Block a user