/// <summary> /// Init all button with assetbundle tile /// /// </summary> void InitScrollViewButton(LayerDepth _layerDepth) { TileBase[] tilesBase = null; bool isFirst = true; switch (_layerDepth) { case LayerDepth.Tile: tilesBase = AssetManager.Instance.GetAllTile(); break; case LayerDepth.Object: tilesBase = AssetManager.Instance.GetAllObject(); break; } if (tilesBase == null) { Debug.LogAssertion("InitScrollViewButton :: tilesBase == null"); return; } foreach (TileBase tilebase in tilesBase) { // Set GameObject GameObject gButton = GameObject.Instantiate(footerButtonPrefabs, SelectTileViewParent(_layerDepth)); Button uiButton = gButton.GetComponent <Button>(); gButton.transform.name = SelectTileViewName(_layerDepth) + tilebase.name; gButton.GetComponentInChildren <Text>().text = tilebase.name; // Get TileType TileUtils.TileType tileType = TileUtils.ParseTileTypeName(tilebase.GetType().ToString()); // Set button callback :: warning layerdepth define by tiletype it can be source of bug in the future if more tiletype will add uiButton.onClick.AddListener(delegate { SetSelectTileName(tilebase.name, _layerDepth); }); Sprite sprite = null; AssetManager.SetSpriteByType(tilebase, out sprite); if (sprite) { gButton.GetComponentInChildren <Image>().sprite = sprite; if (isFirst) { selectedTileViewer.sprite = sprite; isFirst = false; } } else { Debug.LogError(tilebase.name + " sprite is null"); } } }
public static void SetSpriteByType(TileBase _tileBase, out Sprite _sprite) { TileUtils.TileType tileType = TileUtils.ParseTileTypeName(_tileBase.GetType().ToString()); switch (tileType) { case TileUtils.TileType.RuleTile: RuleTile ruteTile = (RuleTile)_tileBase; _sprite = ruteTile.m_DefaultSprite; break; case TileUtils.TileType.Tile: Tile tile = (Tile)_tileBase; _sprite = tile.sprite; break; default: Debug.LogError("Tile type is null " + tileType); _sprite = null; break; } }