using System.Collections.Generic; using UnityEngine; using UnityEngine.Tilemaps; namespace Data { public class TileDef : Define { public Tile.ColliderType collider = Tile.ColliderType.None; public RuleTileRuleDef[] rules; public string texture; public float tileCost = 0; } public class NeighborConditionDef : Define { public string position; public RuleTileRuleDef.NeighborConditionType Type; } public class RuleTileRuleDef : Define { public enum NeighborConditionType { Any, // 可以是任何瓦片 This, // 必须是当前 Rule Tile 自身 (用于[4]位置) NotThis // 不能是当前 Rule Tile 自身 } public float animationSpeed = 1f; // --- 动画精灵 (Animation Sprites) --- // 如果 outputType 是 Animation,这里可以定义一系列动画帧的纹理路径或名称 public List animationTextures; // --- 概率 (Probability) / Perlin Offset --- // 决定此规则被选中的可能性,或者用于Perlin噪声偏移 public float chance = 0.5f; // 默认为100% public NeighborConditionDef[] neighborConditionExtend; public NeighborConditionType[] neighborConditions = new NeighborConditionType[8]; // --- 输出碰撞器类型 (Output Collider Type) --- // 如果需要为该规则设置特定的碰撞器类型 public Tile.ColliderType outputCollider = Tile.ColliderType.None; public RuleTile.TilingRuleOutput.OutputSprite outputType = RuleTile.TilingRuleOutput.OutputSprite.Single; public float tileCost = 0; public RuleTile.TilingRuleOutput.Transform transform = RuleTile.TilingRuleOutput.Transform.Fixed; // 构造函数或其他辅助方法 public RuleTileRuleDef() { for (var i = 0; i < neighborConditions.Length; i++) neighborConditions[i] = NeighborConditionType.Any; } } }