web-dev-qa-db-ja.com

スクリプトクラスが見つからないため、スクリプトコンポーネントを追加できませんか?

昨日、Unity5から2018.2.2f1に統一を更新しました。 2018.2.2f1の更新後、Unityスクリプトがロードされません。

シーンを再生しようとすると、スクリプトがロードされず、スクリプトを再度追加できません。このエラーが発生します。

スクリプトクラスが見つからないため、スクリプトコンポーネント「CubeScript」を追加できません。コンパイルエラーがなく、ファイル名とクラス名が一致していることを確認してください。

Error

6
Youssof H.

プロジェクトの古いコピーがまだある場合は、UnityプロジェクトをUnity 2017にアップグレードしてから2018.2にアップグレードします。 2f1

このエラーが発生する可能性のあるいくつかの理由を以下に示します

1。スクリプト名がクラス名と一致しません。

スクリプト名がMyClassと呼ばれる場合、クラス名はMyClassでなければなりません。これも大文字と小文字を区別します。これが問題ではないことを再確認してください。それが問題ではないことを確認するには、クラス名をコピーし、スクリプト名として貼り付けて、これが問題ではないことを確認します。

1つのスクリプトに複数のクラスがある場合、スクリプト名と一致するクラス名はMonoBehaviourから派生したクラスです。


2。スクリプトにエラーがあります。これはアップグレードであるため、廃止され削除されたAPIを使用している可能性があります。 Visual Studioでスクリプトを開き、エラーがあるかどうかを確認して修正します。通常、エラーがあることを示すコードの下に赤い線があります。


。Unityインポーターとその自動アップグレードスクリプトを使用した不正なインポート。

試すべきこと:

[〜#〜] a [〜#〜]。最初にすることはUnity Editorを再起動することです。

[〜#〜] b [〜#〜]。[プロジェクト]タブを右クリックして、「すべて再インポート」をクリックします。

[〜#〜] c [〜#〜]。まだ問題がある場合は、問題のあるスクリプトを削除して新しいスクリプトを作成するだけです。スクリプトがシーン内の多くのGameObjectにアタッチされている場合、これを行う簡単な方法があります。

[〜#〜] a [〜#〜]。スクリプトを開き、その内容をメモ帳にコピーします。

[〜#〜] b [〜#〜]。エディターから、Projectタブでスクリプトを右クリックします。 「CubeScript」で、「シーン内の参照を検索」を選択します。

[〜#〜] c [〜#〜]。Unityは、このスクリプトがアタッチされているすべてのGameObjectのみを表示します。古いスクリプトを削除します。新しいものを作成し、メモ帳からこの新しいスクリプトにコンテンツをコピーします。これで、新しいスクリプトをシーン内のフィルターされたすべてのGameObjectにドラッグできます。影響を受けるすべてのスクリプトに対してこれを行います。これは手作業ですが、完了したら問題を修正する必要があります。

13
Programmer

他の答えとは別に役立つもう一つのこと

  • MonoBehaviourから継承するクラスをファイルの最初のクラスにします。それは私のためにこの問題を修正しました。
0
Jeevan MB