C# UNITY CS1061精灵不包含已启用的定义
我正在关注《统一》中关于2048的教程。他使用文本和图像来渲染他的“瓷砖”,我决定使用精灵,因为我已经在adobe中预先制作了瓷砖。第一位代码是TileStyleHolder,第二个脚本称为Tile(将附加到实际的精灵/图像本身,该精灵/图像本身将被启用/禁用) 这是第二个脚本~~C# UNITY CS1061精灵不包含已启用的定义,c#,unity3d,C#,Unity3d,我正在关注《统一》中关于2048的教程。他使用文本和图像来渲染他的“瓷砖”,我决定使用精灵,因为我已经在adobe中预先制作了瓷砖。第一位代码是TileStyleHolder,第二个脚本称为Tile(将附加到实际的精灵/图像本身,该精灵/图像本身将被启用/禁用) 这是第二个脚本~~ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public
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()
{
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类瓷砖:单一行为
{
公共整数
{
得到
{
返回号码;
}
设置
{
数字=数值;
如果(数字==0)
SetEmpty();
其他的
{
ApplyStyle(数字);
SetVisible();
}
}
}
私有整数;
私人雪碧瓷砖;
无效唤醒()
{
TileSprite=transform.Find(“numcell”).GetComponent();
}
无效ApplyStyleFromHolder(整数索引)
{
TileSprite=TileStyleHolder.Instance.TileStyles[index].tile_number.ToSprite();
}
无效应用程序样式(int num)
{
开关(num)
{
案例2:
ApplyStyleFromHolder(0);
打破
案例4:
ApplyStyleFromHolder(1);
打破
案例8:
ApplyStyleFromHolder(2);
打破
案例16:
ApplyStyleFromHolder(3);
打破
案例32:
ApplyStyleFromHolder(4);
打破
案例64:
ApplyStyleFromHolder(5);
打破
案例128:
ApplyStyleFromHolder(6);
打破
案例256:
ApplyStyleFromHolder(7);
打破
案例512:
ApplyStyleFromHolder(8);
打破
案例1024:
ApplyStyleFromHolder(9);
打破
案例2048:
ApplyStyleFromHolder(10);
打破
案例4096:
ApplyStyleFromHolder(11);
打破
违约:
LogError(“检查传递给ApplyStyle的numder”);
打破
}
}
私有void SetVisible()
{
TileSprite.enabled=true;
}
私有void SetEmpty()
{
TileSprite.enabled=false;
}
//在第一帧更新之前调用Start
void Start()
{
}
//每帧调用一次更新
无效更新()
{
}
}
如果您使用的是图像
组件,您可以使用以下内容引用精灵:
Sprite mySprite = GetComponent<Image>().sprite;
Sprite mySprite = GetComponent<SpriteRenderer>().sprite;
是的,你不能。。精灵是一种财富。您更希望使用该精灵启用/禁用组件/游戏对象。。。请添加完整的代码请停止您的问题并在此处添加所有相关代码。使用
{}
按钮格式化它!好的,我希望这是明确的,是的,更好;)Sprite
不是一个组件,因此您不能使用GetComponent
,因为您必须找到使用该Sprite的组件,例如SpriteRenderer
或Image
并启用/禁用该组件,而问题是您在尝试什么?这个Sprite
是从哪里来的?在哪里使用?你想要达到的预期行为是什么?这个。这救了我。因为这个,我刚刚完成了很大一部分,非常感谢!
Sprite mySprite = GetComponent<SpriteRenderer>().sprite;