【问题标题】:Unity saying "the associated script is not valid" for the default scriptsUnity 对默认脚本说“相关脚本无效”
【发布时间】:2017-11-16 01:03:30
【问题描述】:

我正在处理一个项目,并且我不得不编写我的第一个脚本。但是当我编写它时,Unity 中的所有其他脚本都停止了工作。

上面写着

“无法加载关联的脚本,请修复任何编译错误并分配一个有效的脚本。”。

我没有编辑任何其他脚本,所以它们应该可以工作,当我将它们导入另一个项目时它们确实可以工作。我真的无法重新开始,因为我已经为此投入了数周的时间,如果我重新开始,并不能保证它不会再次发生。

这是脚本

#pragma strict

function Start () {
    private var doorIsOpen:boolean=false;
    private var doorTimer:float=0.0;
    private var currentDoor:gameobject;
    public var doorOpenTime:float=3.0;
    public var doorOpenSound:AudioClip;
    public var doorShutSound:AudioClip;

}

function Update () {
    if(dooropen){

        doortimer+=time.deltatime;
        if(doortimer>dooropentime){
        door(doorshutsound,false,"doorshut",currentdoor);
    }
        doortimer = 0.0;

    }


    }


}
function door(aClip : audioclip ,opencheck : boolean, animname : string, thisdoor : gameobject ){
    audio.playoneshot(aclip);
    doorisopen = opencheck;
    thisdoor.transform.parent.animation.play(animname);

}

//function opendoor(){
    //audio.playoneshot(dooropensound)
    //var myoutpost:gameobject = gameobject.find("outpost");
    //myoutpost.animation.play("dooropen");


}
function OnControllerColliderHit(hit:ControllerColliderHit){
    if(hit.gameObject.tag == "outpostDoor" && doorisopen = false){


        currentdoor = hit.gameobject;
        door(dooropensound,true,"dooropen",currentdoor);
        dooropen = true;

    }
}

//function shutdoor(){
    //audio.playoneshot(doorshutsound)
    //doorisopen = false;

    //var myoutpost:gameobject = gameobject.find("outpost");
    //myoutpost.animation.play("doorshut");


}

@script requirecomponent(audiosource)

【问题讨论】:

  • 修复编译错误。
  • 好吧,正如阿尔贝托所说,你为什么不听错误信息呢?
  • 你读过我写的吗?我没有编辑脚本,当我将它们导入另一个项目时它们可以工作,所以没有脚本错误..
  • 请向我们展示您正在编写的脚本。
  • 您阅读其他评论者写的内容了吗?您现有的脚本很好,但不会在您的项目中运行,因为您项目中的 所有脚本 都必须运行,否则它们都不会运行。修复您正在编辑的脚本,其他脚本将再次运行。

标签: unity3d


【解决方案1】:

您看到此问题的原因是 未编辑 脚本无法编译并由于您的 新脚本 中的错误而加载。你必须让你的新脚本对编译器友好。

【讨论】:

  • 非常感谢,我现在知道错误是什么,但我似乎无法修复它们。我已将脚本放入问题中。
【解决方案2】:

你所拥有的确实不会编译。鉴于它不会编译,它会告诉您先修复错误,然后才能继续。

因此,确定后,让我们看看您的代码。给定您的函数名称,我假设您想要扩展 MonoBehaviour(即,制作一个自定义组件以附加到 GameObject)。在这种情况下,您想编写如下内容:

#pragma strict

class MyCustomComponent extends MonoBehaviour
{

    function Start()
    {
        //Content here
    }   

    function Update()
    {
        //Content here
    }

    //etc.
}

这将允许您将名为 MyCustomComponent 的组件添加到场景中的游戏对象。其次,您没有在 Start() 函数中声明您的成员变量。你在它之外做那件事。所以

#pragma strict

class MyCustomComponent extends MonoBehaviour
{
    private var doorIsOpen : boolean=false;
    private var doorTimer : float=0.0;
    private var currentDoor : GameObject; //Note the capitalization
    public var doorOpenTime : float=3.0;
    public var doorOpenSound : AudioClip;
    public var doorShutSound : AudioClip;

    function Start()
    {
        //Content here
    }   

    function Update()
    {
        //Content here
    }

    //etc.
}

这些是您列出的错误的主要原因。进行这些更正应该会让您上路。如果有的话,请查看那里的许多教程以了解 UnityScript 的工作原理。当然,请始终查看您遇到的错误。他们通常是现场的。

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2011-10-01
    相关资源
    最近更新 更多