Unity C# - 实例化十六进制网格的游戏对象给我错误无法从CustomClass转换为UnityEngine.Object?

时间:2016-11-30 18:38:25

标签: c# unity3d

我有两个脚本,一个生成十六进制地图,另一个脚本提供名称和预制。在我的MapGen脚本中我得到错误

  

参数1:无法转换节点类型'到UnityEngine.Object'   (CS1503)(Assembly-CSharp)

这是第一个脚本的代码

using UnityEngine;
using System.Collections.Generic;


public class NodeMng : MonoBehaviour {


    public int height; 
    public int width;
    private float MapSizeY;
    private float MapSizeX;


    public GameObject selectedUnit; 
    public GameObject[] hexGridTiles;
    public NodeType[] nodeTypes;



    void Start () 
    {
        mapGeneration();
    }

    public void mapGeneration (){


        for (MapSizeY = 0; MapSizeY < height; MapSizeY = MapSizeY + 0.88f)
        {
            bool doOffset = false; 
            for(MapSizeX = 0; MapSizeX < width; MapSizeX = MapSizeX + 0.769f )
            {
                float offset = doOffset ? 0.451f : 0f; 
                MapSizeY = MapSizeY + offset; 
                Vector3 spawnPoint = new Vector3(MapSizeX, MapSizeY, 0); 


                var groundNode = (GameObject)Instantiate (nodeTypes [Random.Range (0, nodeTypes.Length)], spawnPoint, Quaternion.identity);


                groundNode.name = "Hex_" + MapSizeX + "_" + MapSizeY; 
                groundNode.transform.SetParent(transform, true); 
                ClickableTile ct = groundNode.GetComponent<ClickableTile>(); 
                ct.tileX = MapSizeX;
                ct.tileY = MapSizeY;
                ct.map = this;

                MapSizeY = MapSizeY - offset;
                doOffset = !doOffset; //! sets to true
            }
        }
    }

}

并且继承了第二个脚本的代码

using UnityEngine;
using System.Collections;

[System.Serializable]
public class NodeType{

    public string name;
    public GameObject hexGridTiles;




}

错误发生在以下一行

var groundNode = (GameObject)Instantiate (nodeTypes [Random.Range (0, nodeTypes.Length)], spawnPoint, Quaternion.identity);

当我将nodeTypes更改为hexGridTiles时,它工作得非常好但是在这种情况下我需要它将一个字符串值附加到每个预制件以便在路径下找到该行,所以我不确定这个错误试图告诉什么我很感激任何帮助。

为了清楚起见,这是我正在谈论的内容的截图

enter image description here

1 个答案:

答案 0 :(得分:0)

这个答案归功于Nika Kasradze,我只是将其发布在这里以获得最终结果。

Nodetype需要实例化为

nodeTypes [Random.Range(0,nodeTypes.Length)]。hexGridTiles