C# 为什么这个脚本在unity中显示错误? 使用UnityEngine; 使用UnityEngine.UI; 使用系统集合; 公共类玩家控制器:单行为{ 公众浮标速度; 公共文本; 公共文本; 私人刚体; 私人整数计数; 无效开始() { rb=GetComponent(); 计数=0; SetCountText(); winText.text=“”; } void FixedUpdate() { float moveHorizontal=Input.GetAxis(“水平”); float moveVertical=Input.GetAxis(“垂直”); Vector3移动=新Vector3(水平移动,0.0f,垂直移动); rb.AddForce(移动*速度); } 无效对撞机(对撞机其他) { if(other.gameObject.CompareTag(“拾取”)) { other.gameObject.SetActive(false); 计数=计数+1; SetCountText(); SizeBall(其他.gameObject.transform.Scale) } } 空心尺寸球(尺寸) { transform.Scale=transform.Scale+大小 } void SetCountText() { countText.text=“点:”+count.ToString(); 如果(计数>=22) { winText.text=“你赢了!”; } } }

C# 为什么这个脚本在unity中显示错误? 使用UnityEngine; 使用UnityEngine.UI; 使用系统集合; 公共类玩家控制器:单行为{ 公众浮标速度; 公共文本; 公共文本; 私人刚体; 私人整数计数; 无效开始() { rb=GetComponent(); 计数=0; SetCountText(); winText.text=“”; } void FixedUpdate() { float moveHorizontal=Input.GetAxis(“水平”); float moveVertical=Input.GetAxis(“垂直”); Vector3移动=新Vector3(水平移动,0.0f,垂直移动); rb.AddForce(移动*速度); } 无效对撞机(对撞机其他) { if(other.gameObject.CompareTag(“拾取”)) { other.gameObject.SetActive(false); 计数=计数+1; SetCountText(); SizeBall(其他.gameObject.transform.Scale) } } 空心尺寸球(尺寸) { transform.Scale=transform.Scale+大小 } void SetCountText() { countText.text=“点:”+count.ToString(); 如果(计数>=22) { winText.text=“你赢了!”; } } },c#,unity3d,C#,Unity3d,当我添加SizeBall函数时,错误才开始出现,当我让它启动函数时,我该如何修复它?我是C#的新手,在网上找不到关于这件事的任何信息。 它应该让玩家(球)获得它收集的大量信息,但它会出错,我甚至不能玩游戏。一般来说,请始终使用Stacktrace将完整的错误消息添加到您的问题中。这有助于我们使我们的答案更加切中要害 最简单的先:后 using UnityEngine; using UnityEngine.UI; using System.Collections; public class P

当我添加
SizeBall
函数时,错误才开始出现,当我让它启动函数时,我该如何修复它?我是C#的新手,在网上找不到关于这件事的任何信息。
它应该让玩家(球)获得它收集的大量信息,但它会出错,我甚至不能玩游戏。

一般来说,请始终使用Stacktrace将完整的错误消息添加到您的问题中。这有助于我们使我们的答案更加切中要害


最简单的先:后

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PlayerController : MonoBehaviour {

    public float speed;
    public Text countText;
    public Text winText;

    private Rigidbody rb;
    private int count;

    void Start ()
    {
        rb = GetComponent<Rigidbody>();
        count = 0;
        SetCountText();
        winText.text = "";
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        rb.AddForce(movement * speed);
    }

    void OnTriggerEnter(Collider other) 
    {
        if (other.gameObject.CompareTag("Pick Up"))
        {
            other.gameObject.SetActive(false);
            count = count + 1;
            SetCountText();
            SizeBall(other.gameObject.transform.Scale)
        }
    }

    void SizeBall(Size)
    {
        transform.Scale = transform.Scale + Size
    }

    void SetCountText()
    {
        countText.text = "Points: " + count.ToString();

        if (count >= 22)
        {
            winText.text = "You Win!";
        }
    }
}

您缺少一个


然后

毫无意义。缺少参数名称或类型。从用法来看,我想应该是

void SizeBall(Size){...}
void SizeBall(Vector3 Size){...}

此外,
transform.Scale
不存在

只有

相对于游戏对象父对象的变换比例

后者是只读的,返回应用了所有相应父比例的绝对比例

所以应该是这样

void SizeBall(Size){...}
void SizeBall(Vector3 Size){...}


嗯,你可以忽略错误(而不是阅读错误),然后提问而不显示错误,同时不学习任何东西或解决问题。。或简言之,错误是我们知道哪里出了问题的唯一工具,如果你选择忽略它们,你将自担风险。请编辑您的问题和您得到的例外情况,以便有人可以帮助您解决您缺少的a
在行尾
transform.Scale=transform.Scale+Size
但是我怀疑这是导致您所指错误的原因。您是否能够发布错误内容?还可以使用函数调用(如
count.ToString()
rb.AddForce()
GetAxis()
等)来修复格式设置。您不应该使用空格作为类的名称,文件也是相同的,因为我因此面临相同的问题
// Or maybe localScale depending on your needs
SizeBall(other.gameObject.transform.lossyScale);
void SizeBall (Vector3 size)
{
    transform.localScale += size;
}