【发布时间】:2019-09-25 16:33:07
【问题描述】:
我正在统一关注 2048 的教程。他正在使用文本和图像来渲染他的“瓷砖”,我决定使用精灵,因为我在 adobe 中有预制的瓷砖。第一个代码是 TileStyleHolder,第二个脚本称为 Tile(附加到将启用/禁用的实际精灵/图像本身。)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class TileStyle
{
public Sprite tile_number;
}
public class TileStyleHolder : MonoBehaviour
{
//SINGLETON
public static TileStyleHolder Instance;
public TileStyle[] TileStyles;
void Awake()
{
Instance = this;
}
}
这是第二个脚本~~
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Tile : MonoBehaviour
{
public int Number
{
get
{
return number;
}
set
{
number = value;
if (number == 0)
SetEmpty();
else
{
ApplyStyle(number);
SetVisible();
}
}
}
private int number;
private Sprite TileSprite;
void Awake()
{
TileSprite = transform.Find("numcell").GetComponent<Sprite>();
}
void ApplyStyleFromHolder(int index)
{
TileSprite = TileStyleHolder.Instance.TileStyles[index].tile_number.ToSprite();
}
void ApplyStyle(int num)
{
switch (num)
{
case 2:
ApplyStyleFromHolder(0);
break;
case 4:
ApplyStyleFromHolder(1);
break;
case 8:
ApplyStyleFromHolder(2);
break;
case 16:
ApplyStyleFromHolder(3);
break;
case 32:
ApplyStyleFromHolder(4);
break;
case 64:
ApplyStyleFromHolder(5);
break;
case 128:
ApplyStyleFromHolder(6);
break;
case 256:
ApplyStyleFromHolder(7);
break;
case 512:
ApplyStyleFromHolder(8);
break;
case 1024:
ApplyStyleFromHolder(9);
break;
case 2048:
ApplyStyleFromHolder(10);
break;
case 4096:
ApplyStyleFromHolder(11);
break;
default:
Debug.LogError("Check the numders that you pass to ApplyStyle");
break;
}
}
private void SetVisible()
{
TileSprite.enabled = true;
}
private void SetEmpty()
{
TileSprite.enabled = false;
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
【问题讨论】:
-
是的,你不能......精灵是一种资产。您宁愿使用该精灵启用/禁用组件/游戏对象...请添加完整代码
-
停止请EDIT您的问题并在那里添加您所有的相关代码。使用
{ }按钮对其进行格式化! -
好的,已修复,希望清楚
-
是的更好;)
Sprite不是一个组件,所以你不能使用GetComponent<Sprite>如上所述,你必须找到使用该精灵的组件,例如SpriteRenderer或Image并启用/禁用它 -
问题是你在尝试什么?这个
Sprite是如何/从哪里来的?它在哪里使用?您试图实现的预期行为是什么?