无法将类型“UnityEngine.GameObject”隐式转换为 ScriptName

Pan*_*hah -2 c# unity-game-engine

游戏管理器

public class GameManager : MonoBehaviour
{
    public static GameManager instance;

    public SlingShot slingshot;


    // Use this for initialization
    void Start()
    {

        int character = PlayerPrefs.GetInt ("CharacterSelected", 0);
            if(character==0)
            {
                slingshot = GameObject.Find ("slingshot");
            }

    }
Run Code Online (Sandbox Code Playgroud)

slingshot 是 SlingShot.cs 的一个实例,上面的代码我试图在用户从菜单中选择时动态设置我的弹弓。我找不到这有什么问题,但它给了我错误Assets/Scripts/GameManager.cs(50,28): error CS0029: Cannot implicitly convert typeUnityEngine.GameObject' toSlingShot'

这个你能帮我吗。谢谢

Pro*_*mer 5

SlingShot是脚本而不是GameObject.

GameObject.FindGameObject不返回SlingShot。您需要使用该GetComponent函数SlingShotGameObject.Find函数返回的 GameObject 中获取组件。

slingshot = GameObject.Find ("slingshot").GetComponent<SlingShot>();
Run Code Online (Sandbox Code Playgroud)

您还可以将其分解为:

//Find the slingshot GameOject
GameObject slingObj = GameObject.Find("slingshot");
//Get the SlingShot script that is attached to the slingshot GameObject
slingshot = slingObj.GetComponent<SlingShot>();
Run Code Online (Sandbox Code Playgroud)