2025-07-15 15:26:58 +08:00
|
|
|
|
using System.Collections.Generic;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
using UnityEngine;
|
2025-08-19 20:22:10 +08:00
|
|
|
|
using UnityEngine.Tilemaps;
|
2025-07-15 15:26:58 +08:00
|
|
|
|
|
|
|
|
|
|
namespace Data
|
|
|
|
|
|
{
|
|
|
|
|
|
public class TileDef : Define
|
|
|
|
|
|
{
|
2025-08-19 20:22:10 +08:00
|
|
|
|
public Tile.ColliderType collider = Tile.ColliderType.None;
|
2025-10-10 14:08:23 +08:00
|
|
|
|
public RuleTileRuleDef[] rules;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
public string texture;
|
2025-09-28 15:02:57 +08:00
|
|
|
|
public float tileCost = 0;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
}
|
2025-09-28 15:02:57 +08:00
|
|
|
|
|
2025-10-10 14:08:23 +08:00
|
|
|
|
public class NeighborConditionDef : Define
|
2025-09-28 15:02:57 +08:00
|
|
|
|
{
|
|
|
|
|
|
public string position;
|
|
|
|
|
|
public RuleTileRuleDef.NeighborConditionType Type;
|
|
|
|
|
|
}
|
2025-10-10 14:08:23 +08:00
|
|
|
|
|
2025-09-19 08:26:54 +08:00
|
|
|
|
public class RuleTileRuleDef : Define
|
|
|
|
|
|
{
|
|
|
|
|
|
public enum NeighborConditionType
|
2025-07-15 15:26:58 +08:00
|
|
|
|
{
|
2025-09-19 08:26:54 +08:00
|
|
|
|
Any, // 可以是任何瓦片
|
|
|
|
|
|
This, // 必须是当前 Rule Tile 自身 (用于[4]位置)
|
2025-10-10 14:08:23 +08:00
|
|
|
|
NotThis // 不能是当前 Rule Tile 自身
|
2025-07-15 15:26:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-10 14:08:23 +08:00
|
|
|
|
public float animationSpeed = 1f;
|
|
|
|
|
|
|
|
|
|
|
|
// --- 动画精灵 (Animation Sprites) ---
|
|
|
|
|
|
// 如果 outputType 是 Animation,这里可以定义一系列动画帧的纹理路径或名称
|
|
|
|
|
|
public List<string> animationTextures;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
|
|
|
|
|
|
// --- 概率 (Probability) / Perlin Offset ---
|
|
|
|
|
|
// 决定此规则被选中的可能性,或者用于Perlin噪声偏移
|
|
|
|
|
|
public float chance = 0.5f; // 默认为100%
|
2025-10-10 14:08:23 +08:00
|
|
|
|
public NeighborConditionDef[] neighborConditionExtend;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
|
2025-10-10 14:08:23 +08:00
|
|
|
|
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;
|
2025-09-28 15:02:57 +08:00
|
|
|
|
public float tileCost = 0;
|
2025-10-10 14:08:23 +08:00
|
|
|
|
public RuleTile.TilingRuleOutput.Transform transform = RuleTile.TilingRuleOutput.Transform.Fixed;
|
2025-09-19 08:26:54 +08:00
|
|
|
|
|
|
|
|
|
|
// 构造函数或其他辅助方法
|
|
|
|
|
|
public RuleTileRuleDef()
|
2025-07-15 15:26:58 +08:00
|
|
|
|
{
|
2025-10-10 14:08:23 +08:00
|
|
|
|
for (var i = 0; i < neighborConditions.Length; i++) neighborConditions[i] = NeighborConditionType.Any;
|
2025-07-15 15:26:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|