无法从用法中推断出方法的类型参数

时间:2014-04-11 20:37:55

标签: types unity3d arguments

这是我的代码,我正在试图找出这一行的问题..

instance = new GameObject(“gamestate”)。AddComponent();

以下是我收到的错误:The type arguments for method 'UnityEngine.GameObject.AddComponent<T>()' cannot be inferred from the usage. Try specifying the type arguments explicitly

using UnityEngine;
using System.Collections;

public class gamestate : MonoBehaviour
{

    //Declare Properties
    private static gamestate instance;

    public static gamestate Instance
    {
        get
        {
            if(instance == null)
            {
                instance = new GameObject( "gamestate").AddComponent ();
            }

            return instance;
        }
    }    

    public void startState()
    {
        print ("Creating a new game state");
    }
}

2 个答案:

答案 0 :(得分:1)

这一行:

instance = new GameObject( "gamestate").AddComponent ();

具体来说,这个电话:

AddComponent ();

您想添加哪种组件?我们假设您要添加AudioSource

AddComponent<AudioSource>();

从上下文来看,您似乎想要gamestate

AddComponent<gamestate>();

为了您自己的参考,这些被称为generics,它们与C ++中的模板类似。

顺便说一句,通常的做法是将类名称大写(例如GamestateGameState)。编译器不关心,但其他开发人员可能会这样做。

答案 1 :(得分:1)

我想我可能会遵循相同的例子! ; - )

您应该更改以下行:

instance = new GameObject( "gamestate").AddComponent ();

有:

instance = new GameObject( "gamestate").AddComponent<gamestate>();

他们的完整代码在这个pastebin上:http://pastebin.com/YPJTGLwX