Unity 2D c#脚本,下载时鼠标位置的Spawnobject

时间:2014-05-24 07:22:30

标签: c# unity3d

我是C#的新手(基本上是第一次使用,不得不为这个项目编写脚本),我正在尝试传送(从屏幕上到屏幕上)我游戏中的一个对象(我正在使用一个多维数据集一个简单的对象,我将使用inkscape在其工作的位置创建一个“更好”的对象)稍后将添加cube2,只关注这个工作。

目的是将一个物体传送到我的'Bumber'预制件(地板)的位置,基于玩家点击'Bumber'上的位置并产生鼠标位置在'Bumber'上的位置,如果不是在'Bumber'上根本没有产生(还没有进行bumber检查),这将触发一个事件,导致玩家失败。

当我在玩游戏之前,当我点击时,立方体只会消失,然后向我抛出错误而不会在游标位置产生

我有'cube'预制件(从层次结构拖到Resources文件夹,它包含spawn脚本组件)。当我回到统一时,我得到错误:

(32,37)当前上下文中不存在名称'cube'

(32,25)`UnityEngine.Object.Instantiate(UnityEngine.Object,UnityEngine.Vector3,UnityEngine.Quaternion)'的最佳重载方法匹配有一些无效的参数

(32,25)参数#1' cannot convert object'表达式,用于键入`UnityEngine.Object'

我已经尝试了几个小时来修复这个脚本,查看统一数据库并没有用。

using UnityEngine;
using System.Collections;


public class Spawn : MonoBehaviour {

public int trapCount;

void Start ()
{
    trapCount = 0;
    GameObject cube =(GameObject)Instantiate((GameObject)Resources.Load("cube"));
}


void Update ()
{
    if (Input.GetMouseButtonDown (0)) 
    {

        Spawner ();
        trapCount++;
    }
}

void Spawner()
{
    Vector3 mousePosition = Input.mousePosition;
    transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    if(trapCount == 0)
    {
        Instantiate(cube, transform.position, Quaternion.identity);     //getting error here, I don't care about rotation value, don't want to rotate at all, but doesn't like it, if it doesn't have anything there.
    }

    else if (trapCount >= 1)
    {
        Debug.Log("Trap limit reached!");
    }
}

}

C#请,如果可以的话,请解释一下你在做什么,谢谢你!

1 个答案:

答案 0 :(得分:0)

始终(好吧,几乎总是)相信错误消息告诉您的内容。

  

(32,37)当前上下文中不存在名称'cube'

你可以获得这行

Instantiate(cube, transform.position, Quaternion.identity);

此时,方法范围内的任何地方都没有cube。你有你的

GameObject cube =(GameObject)Instantiate((GameObject)Resources.Load("cube")); 

Start()方法中,但它只存在于该方法中。例如,它不是该类的成员。使其成为会员将解决该问题。

这很可能也是后续错误的原因。如果它不知道多维数据集是什么,它不知道如何处理它作为Instantiate()的参数。

如果你对C#全新,那么你自己最大的好处就是拿一本好书。 Unity将允许你通过黑客攻击来获得相当远的东西,但是有一点可以完全没有替代学习语言。它会对你有很大的帮助。

祝你好运。