Hello!
I’m using a custom rule tile called “AdvancedRuleTile” whose code is below.
using UnityEngine;
using UnityEngine.Tilemaps;
using System.Linq;
using Unity.VisualScripting;
[CreateAssetMenu(menuName = "Custom/Advanced Rule Tile")]public class AdvancedRuleTile : RuleTile<AdvancedRuleTile.Neighbor> {
[Header("Advanced Tile")]
[Space]
[Tooltip("Compatible tiles")]
public TileBase[] compatibleTiles;
[Tooltip("Edge Tile Data")]
public EdgeTileData edgeTileData;
public class Neighbor : RuleTile.TilingRule.Neighbor
{
public const int Compatible = 1;
public const int NotCompatible = 2;
public const int Nothing = 3;
public const int EmptyCW = 4;
public const int EmptyCCW = 5;
}
...
This all works as intended. I’m using a modified editor window for this as well (called “AdvancedRuleTileEditor”):
#if UNITY_EDITOR
using UnityEngine;
namespace UnityEditor
{
[CustomEditor(typeof(AdvancedRuleTile))]
[CanEditMultipleObjects]
public class AdvancedRuleTileEditor : RuleTileEditor
{
public Texture2D CompatibleIcon;
public Texture2D NotCompatibleIcon;
public Texture2D NothingIcon;
public Texture2D EmptyCW;
public Texture2D EmptyCCW;
public override void RuleOnGUI(Rect rect, Vector3Int position, int neighbor)
{
switch (neighbor)
{
case AdvancedRuleTile.Neighbor.Compatible:
GUI.DrawTexture(rect, CompatibleIcon);
return;
case AdvancedRuleTile.Neighbor.NotCompatible:
GUI.DrawTexture(rect, NotCompatibleIcon);
return;
case AdvancedRuleTile.Neighbor.Nothing:
GUI.DrawTexture(rect, NothingIcon);
return;
case AdvancedRuleTile.Neighbor.EmptyCW:
GUI.DrawTexture(rect, EmptyCW);
return;
case AdvancedRuleTile.Neighbor.EmptyCCW:
GUI.DrawTexture(rect, EmptyCCW);
return;
}
base.RuleOnGUI(rect, position, neighbor);
}
}
}
#endif
The issue is that cycling these rules in the editor isn’t working properly. I’m able to right click to cycle the rules in reverse, but when I left click it gets stuck on state 1 (Compatible - it’s the green icon):
It’s quite aggravating that I’m only able to cycle this in reverse. Is there anything in my code that might be causing this, or is this just a bug in the Unity editor that I have to work around?