【Unity2020版】Standard Assetsを使えるようにする

こじゃら

Unity2020でStandard Assetsをインポートして使おうとしているんだけど、エラーが出て実行できないみたいなの😭

このは

Unity2020では少しスクリプトを編集しないといけないみたいだね。

Standard Assets(スタンダードアセット)はUnity公式が配布しているアセットで、Unityでよく使われる標準的な機能やモデルなどが一通り揃っている便利アセットです。

しかし、2021/4/24現在では管理とサポートが終了しているLegacy packageとなっており、Unity2020ではインポートしてもコンパイルエラーが出てそのままでは扱えない状態です。

そのため、エラー無く扱えるようにするには、スクリプトの一部を修正する必要があります。

本記事では、Unity2020でもStandard Assetsを扱いたい方向けに、エラーを解消して導入する手順について解説します。

動作環境
  • Unity2020.3.4f1
  • Standard Assets (for Unity 2018.4)

アセットのインポート

まず、インポートしたいUnityプロジェクトを開いておきます。

プロジェクトを開いたら、以下公式ページからStandard Assets (for Unity 2018.4)をダウンロードします。

ダウンロードにはUnityアカウントへのログインが必要です。
遷移先ページ右にマイアセットに追加するまたはUnityで開くと書かれた青いボタンをクリックすれば、ダウンロードが始まります。

このとき、アカウントにログインしていない場合はログインを求められるため、ログインしてから上記をもう一度お試しください。

無事に処理が進むと、UnityエディタのPackage Managerウィンドウが開きます。
ここで開かない場合は、もう一度上の青いボタンをクリックして画面が開くまで待機してください。

Package Manager画面のStandard Assets (for Unity 2018.4)を選択し、Importボタンをクリックし、Standard Assetsのインポートを行ってください。
もしImportボタンの部分がDownloadボタンになっていたら、Downloadボタンを押してImportボタンに変わってからもう一度ボタンをクリックします。

すると、Import Unity Packageウィンドウが開かれるので、必要なアセットを選択してImportボタンをクリックします。

本記事では、すべて選択してインポートを進めていくこととします。

インポートが成功すると、次のようにエラーがコンソールに出力された状態になります。

コンパイルエラーの修正

Standard Assetsのすべてをインポートすると、次のようなエラーがコンソールに出力されます。

Assets\Standard Assets\Utility\SimpleActivatorMenu.cs(11,16): error CS0619: 'GUIText' is obsolete: 'GUIText has been removed. Use UI.Text instead.'

これは、GUITextクラスが廃止されたために出ているエラーです。
指示に従ってGUITextクラスを使っている箇所をUI.Textクラスに置き換えます。

SimpleActivatorMenu.csスクリプトの11行目を以下の通り書き換えてください。

訂正前

public GUIText camSwitchButton;

訂正後

public UnityEngine.UI.Text camSwitchButton;

修正すると、再コンパイルが走り、コンパイルに成功するとエラーが消えます。
これでゲームを実行できるようになります。

サンプルシーンをプレイする

早速サンプルシーンを開いてゲームをプレイしてみましょう。
Standard Assetsのサンプルシーンは、Assets/SampleScenes/Scenesディレクトリ配下にまとめられています。

ここではCharacterThirdPersonシーンを開いてみます。
これは三人称視点でキャラクターを操作するサンプルです。

この状態で実行すると、以下のようにゲームが始まります。

ゲーム中からシーン遷移できるようにする

ここまでの手順を実施することで、個別のシーンを開いてプレイできるようになりました。
しかし、Escボタンからメニューを開き、別のゲームを選択すると次のようなエラーが出てしまいます。

Scene '2dCharacter' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
To add a scene to the build settings use the menu File->Build Settings...
UnityEngine.SceneManagement.SceneManager:LoadScene (string)
SceneAndURLLoader:SceneLoad (string) (at Assets/SampleScenes/Menu/Scripts/SceneAndURLLoader.cs:20)
UnityEngine.EventSystems.EventSystem:Update ()

これは、ビルドに含まれないシーンを開こうとして発生しているエラーです。

次の手順で解消可能ですが、サンプルシーンがすべてビルド対象に含まれてしまう点にはご注意ください。1サンプルシーンがビルドに含まれると、ビルド後のバイナリサイズが大きくなります。
必要な場合のみ以下手順を実施してください。

メニューからFile→Build Settings…の順に選択し、Build Settingsウィンドウを開きます。

そして、Assets/SampleScenes/Scenesディレクトリ配下のシーンをすべて選択し、Scene In Buildにドラッグ&ドロップしてください。

これで、ゲーム中からシーン遷移できるようになります。

さいごに

Unity標準のStandard Assetsは、ゲームの基本的なサンプルや必要パーツがまとまった便利なアセットです。

サポートが終了していますが、まだまだ使える場面が多いかもしれません。
当サイトで解説している記事のサンプルでもStandard Assetsを積極的に活用しています。

お役に立てたなら嬉しいです。

参考サイト