我是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#请,如果可以的话,请解释一下你在做什么,谢谢你!
答案 0 :(得分:0)
始终(好吧,几乎总是)相信错误消息告诉您的内容。
(32,37)当前上下文中不存在名称'cube'
你可以获得这行
Instantiate(cube, transform.position, Quaternion.identity);
此时,方法范围内的任何地方都没有cube
。你有你的
GameObject cube =(GameObject)Instantiate((GameObject)Resources.Load("cube"));
在Start()
方法中,但它只存在于该方法中。例如,它不是该类的成员。使其成为会员将解决该问题。
这很可能也是后续错误的原因。如果它不知道多维数据集是什么,它不知道如何处理它作为Instantiate()
的参数。
如果你对C#全新,那么你自己最大的好处就是拿一本好书。 Unity将允许你通过黑客攻击来获得相当远的东西,但是有一点可以完全没有替代学习语言。它会对你有很大的帮助。
祝你好运。