C# 当我将此代码添加到脚本时,Unity崩溃
下面是我用来在我的RPG游戏中生成地图的代码。 Unity不会告诉我错误,它只是停止响应,因此我必须强制停止应用程序。我已经检查了所有代码并确认了Unity中的设置,但仍然出现相同的问题。 以下是本系列教程:C# 当我将此代码添加到脚本时,Unity崩溃,c#,unity3d,C#,Unity3d,下面是我用来在我的RPG游戏中生成地图的代码。 Unity不会告诉我错误,它只是停止响应,因此我必须强制停止应用程序。我已经检查了所有代码并确认了Unity中的设置,但仍然出现相同的问题。 以下是本系列教程: public类LevelManager:monobhavior { [序列化字段] 私有变换映射; [序列化字段] 私有纹理2d[]映射数据; [序列化字段] 私有MapElement[]mapElements; [序列化字段] 私人雪碧瓷砖; 私人Vector3 WorldStartPo
public类LevelManager:monobhavior
{
[序列化字段]
私有变换映射;
[序列化字段]
私有纹理2d[]映射数据;
[序列化字段]
私有MapElement[]mapElements;
[序列化字段]
私人雪碧瓷砖;
私人Vector3 WorldStartPos
{
得到
{
返回Camera.main.ScreenToWorldPoint(新矢量3(0,0));
}
}
//在第一帧更新之前调用Start
void Start()
{
生成映射();
}
//每帧调用一次更新
无效更新()
{
}
私有void GenerateMap()
{
对于(int i=0;ie.MyColor==c);
if(新元素!=null)
{
float xPos=WorldStartPos.x+(defaultTile.bounds.size.x*x);
float yPos=WorldStartPos.y+(defaultTile.bounds.size.y*y);
GameObject go=Instantiate(newElement.MyElementPrefab);
go.transform.position=新向量2(xPos,yPos);
go.transform.parent=map;
}
}
}
}
}
}
[可序列化]
公共类映射元素
{
[序列化字段]
私有字符串tileTag;
[序列化字段]
私人色彩;
[序列化字段]
私有游戏对象元素预置;
公共游戏对象MyElementPrefab
{
得到
{
返回元素预制;
}
}
公共色霉色
{
得到
{
返回颜色;
}
}
公共字符串MyTileTag{
得到
{
返回tileTag;
}
}
}
我确信您正在为(int y=0;xx
替换y
为(int y=0;xpublic class LevelManager : MonoBehaviour
{
[SerializeField]
private Transform map;
[SerializeField]
private Texture2D[] mapData;
[SerializeField]
private MapElement[] mapElements;
[SerializeField]
private Sprite defaultTile;
private Vector3 WorldStartPos
{
get
{
return Camera.main.ScreenToWorldPoint(new Vector3(0, 0));
}
}
// Start is called before the first frame update
void Start()
{
GenerateMap();
}
// Update is called once per frame
void Update()
{
}
private void GenerateMap()
{
for(int i = 0; i < mapData.Length; i++)
{
for (int x = 0; x < mapData[i].width; x++)
{
for (int y = 0; x < mapData[i].height; y++)
{
Color c = mapData[i].GetPixel(x, y);
MapElement newElement = Array.Find(mapElements, e => e.MyColor == c);
if(newElement != null)
{
float xPos = WorldStartPos.x + (defaultTile.bounds.size.x * x);
float yPos = WorldStartPos.y + (defaultTile.bounds.size.y * y);
GameObject go = Instantiate(newElement.MyElementPrefab);
go.transform.position = new Vector2(xPos, yPos);
go.transform.parent = map;
}
}
}
}
}
}
[Serializable]
public class MapElement
{
[SerializeField]
private string tileTag;
[SerializeField]
private Color color;
[SerializeField]
private GameObject elementPrefab;
public GameObject MyElementPrefab
{
get
{
return elementPrefab;
}
}
public Color MyColor
{
get
{
return color;
}
}
public string MyTileTag {
get
{
return tileTag;
}
}
}