Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我将此代码添加到脚本时,Unity崩溃_C#_Unity3d - Fatal编程技术网

C# 当我将此代码添加到脚本时,Unity崩溃

C# 当我将此代码添加到脚本时,Unity崩溃,c#,unity3d,C#,Unity3d,下面是我用来在我的RPG游戏中生成地图的代码。 Unity不会告诉我错误,它只是停止响应,因此我必须强制停止应用程序。我已经检查了所有代码并确认了Unity中的设置,但仍然出现相同的问题。 以下是本系列教程: public类LevelManager:monobhavior { [序列化字段] 私有变换映射; [序列化字段] 私有纹理2d[]映射数据; [序列化字段] 私有MapElement[]mapElements; [序列化字段] 私人雪碧瓷砖; 私人Vector3 WorldStartPo

下面是我用来在我的RPG游戏中生成地图的代码。 Unity不会告诉我错误,它只是停止响应,因此我必须强制停止应用程序。我已经检查了所有代码并确认了Unity中的设置,但仍然出现相同的问题。 以下是本系列教程:

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;x。。。由于打字错误,我将关闭此主题。
public 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;
        }
    }
}