【问题标题】:Unity script cannot be derived [duplicate]Unity脚本无法派生[重复]
【发布时间】:2018-09-10 02:15:52
【问题描述】:

晚上好,目前正在完成一项即将到期的作业,我似乎无法理解为什么没有分配此代码。 Unity 不断向我显示的一个错误是脚本必须从 MonoBehaviour 派生。我查找了教程和线程,但似乎仍然找不到我的问题。以下是我目前的代码副本。非常感谢您的帮助!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Track01Track : MonoBehaviour {

    public GameObject TheMarker;
    public GameObject Mark01;
    public GameObject Mark02;
    public GameObject Mark03;
    public GameObject Mark04;
    public GameObject Mark05;
    public GameObject Mark06;
    public GameObject Mark07;
    public GameObject Mark08;
    public GameObject Mark09;
    public GameObject Mark10;
    public GameObject Mark11;
    public GameObject Mark12;
    public GameObject Mark13;
    public GameObject Mark14;
    public GameObject Mark15;
    public GameObject Mark16;
    public GameObject Mark17;
    public GameObject Mark18;
    public GameObject Mark19;
    public GameObject Mark20;
    public GameObject Mark21;
    public GameObject Mark22;
    public GameObject MarkTracker;

   void Start ()
    {

    }

    void Update () {

        if (MarkTracker == 0)
        {
            TheMarker.transform.position = Mark01.transform.position;
        }
        if (MarkTracker == 1)
        {
            TheMarker.transform.position = Mark02.transform.position;
        }
        if (MarkTracker == 2)
        {
            TheMarker.transform.position = Mark03.transform.position;
        }
        if (MarkTracker == 3)
        {
            TheMarker.transform.position = Mark04.transform.position;
        }
        if (MarkTracker == 4)
        {
            TheMarker.transform.position = Mark05.transform.position;
        }
        if (MarkTracker == 5)
        {
            TheMarker.transform.position = Mark06.transform.position;
        }
        if (MarkTracker == 6)
        {
            TheMarker.transform.position = Mark07.transform.position;
        }
        if (MarkTracker == 7)
        {
            TheMarker.transform.position = Mark08.transform.position;
        }
        if (MarkTracker == 8)
        {
            TheMarker.transform.position = Mark09.transform.position;
        }
        if (MarkTracker == 9)
        {
            TheMarker.transform.position = Mark10.transform.position;
        }
        if (MarkTracker == 10)
        {
            TheMarker.transform.position = Mark11.transform.position;
        }
        if (MarkTracker == 11)
        {
            TheMarker.transform.position = Mark12.transform.position;
        }
        if (MarkTracker == 12)
        {
            TheMarker.transform.position = Mark13.transform.position;
        }
        if (MarkTracker == 13)
        {
            TheMarker.transform.position = Mark14.transform.position;
        }
        if (MarkTracker == 14)
        {
            TheMarker.transform.position = Mark15.transform.position;
        }
        if (MarkTracker == 15)
        {
            TheMarker.transform.position = Mark16.transform.position;
        }
        if (MarkTracker == 16)
        {
            TheMarker.transform.position = Mark17.transform.position;
        }
        if (MarkTracker == 17)
        {
            TheMarker.transform.position = Mark18.transform.position;
        }
        if (MarkTracker == 18)
        {
            TheMarker.transform.position = Mark19.transform.position;
        }
        if (MarkTracker == 19)
        {
            TheMarker.transform.position = Mark20.transform.position;
        }
        if (MarkTracker == 20)
        {
            TheMarker.transform.position = Mark21.transform.position;
        }
        if (MarkTracker == 21)
        {
            TheMarker.transform.position = Mark22.transform.position;
        }
    }

    IEnumerator OnTriggerEnter(Collider collision)
    {
        if (collision.gameObject.tag == "Track01")
        {
            this.GetComponent<BoxCollider>().enabled = false;
            MarkTracker += 1;
            if (MarkTracker == 22)
            {
                MarkTracker = 0;
            }
            yield return new WaitForSeconds(1);
            this.GetComponent<BoxCollider>().enabled = true;
        }
    }
}

这是错误:

无法添加脚本行为 CallbackExecutor。脚本需要 派生自 MonoBehaviour。

【问题讨论】:

  • 你能告诉我们实际的问题是什么吗?问题标题是您遇到的错误吗?还是什么?
  • 抱歉,unity给我看的文字是; “无法添加脚本行为 CallbackExecutor。脚本需要从 MonoBehaviour 派生”。我检查过我输入的信息是否正确,我不认为我做错了什么。
  • 除非我弄错了(我没有使用 Unity 的经验),否则您上面显示的脚本是 Track01Track,而不是 CallbackExecutor - 对吗?
  • CallbackExecutor 脚本在哪里?
  • 没错,但我不确定那是什么

标签: c# unity3d


【解决方案1】:

您应该检查 Unity 编辑器中脚本的“名称”是否与您的班级名称 Track01Track 一致。

【讨论】:

  • 我已验证,但仍无法正常工作
  • 请贴出错误截图。
  • 这为我解决了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2017-05-22
  • 2017-01-15
相关资源
最近更新 更多