Files

57 lines
2.0 KiB
C#
Raw Permalink Normal View History

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<string> 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;
}
}
}