御幸備忘録

主にUnityに関してのブログです。

【Unity】Package Managerから古いバージョンが落とせない時の解決方法

はじめに

 UnityのPackage Managerでは、Unityのバージョンに合わせて古いバージョンのパッケージが落とせないようになっています。例えば、Unity 2020.3.31ではVisual Studio Code Editorの古いバージョンは落とすことができますが、TextMeshProの古いバージョンは落とすことができなくなっています。TextMeshProの古いバージョンが欲しい場合、Package Managerからインストールすることはできません。

Visual Studio Code Editorの例
TextMeshProの例

 何も問題がなければいいですが、そのバージョン特有のバグや他のライブラリとの兼ね合いで古いバージョンに入れ替えたいことがあります。この記事では、Package Managerで更新できない場合の解決方法を説明します。

直接、manifest.jsonを書き換える

ここでは、TextMeshProをダウングレードする例で説明します。

  1. Unityのプロジェクトがある場所をフォルダで開く
  2. このようなフォルダが見えるので、Packagesフォルダを開く
    プロジェクトのフォルダ
  3. Packagesフォルダ内に2つjsonファイルがあるので、manifest.jsonを開く
    Packagesのフォルダ
  4. com.unity.timemeshproを探して、バージョンを変更する。ここでは、3.0.6から3.0.5に変更する
    manifest.json
  5. これで、TextMeshPro v3.0.5に入れ替わりました
    変更後のTextMeshProのバージョン

【Unity】Firebase Dynamic Linksで2回同じリンクが呼び出される時の解決

はじめに

 UnityでAndroid向けに開発したアプリでFirebase Dynamic Linksを使っていると、同じリンクが2回も開く不具合があります。*1他のアプリからDynamic Linksを開いた後、アプリを再起動すると前回のリンクから開いた時と同じ挙動をします。

原因と解決

 Intent ExtraにDynamic Linksが残っているのが原因です。Dynamic Linksから起動した後、以下のコードを呼び出しIntent Extraから削除する必要があります。

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
var intent = activity.Call<AndroidJavaObject>("getIntent");

intent.Call("removeExtra", "com.google.firebase.dynamiclinks.DYNAMIC_LINK_DATA");
intent.Call("removeExtra", "com.google.android.gms.appinvite.REFERRAL_BUNDLE");

参考リンク

github.com

*1:私の環境では2回でしたが、下記のGitHubのIssueでは毎回

Unity Hub 3.x.x以降を日本語化する方法

Unity Hubの言語設定を日本語に切り替える

  1. 歯車マーク⚙をクリックしてPreferencesを開きます。
  2. Preferencesの画面の左からAppearanceを選びます。
  3. LanguageをEnglishから日本語に変更します。
Unity Hubの画面

VS Codeでの拡張機能の非推奨とは何か

はじめに

 前回の記事に関連して、拡張機能の非推奨について
miyukifueda.hatenablog.com

拡張機能の非推奨

 Visual Studio Code version 1.68*1からは拡張機能に非推奨が追加されました。
code.visualstudio.com

 非推奨になった拡張機能はこのような表示になります。

検索結果での表示
拡張機能のページ

どのような拡張機能が非推奨になるのか

 公式によると、以下が非推奨の拡張機能に当たります。

 また、非推奨になったからといってVS Code拡張機能を自動的に移行したり、アンインストールすることはないそうです。ただし、推奨される拡張機能への移行ボタンが表示されます。

*1:執筆時点では最新はv1.70

【VSCode】Debugger for Unityが非推奨になっている件と乗り換え先

はじめに

 Visual Studio Codeを使ってUnityのコーディングを行う場合に使われる拡張機能:Debugger for Unityですが、現在はメンテナンスがされなくなったため非推奨になっているようです。Visual Studio CodeからDebugger for Unityをインストールしようとすると、「この拡張機能は、メンテナンスされなくなったため、非推奨です。(原文:This extension is deprecated as it is no longer being maintained.)」と表示されています。ただし、警告が表示されていても、インストールは問題なくできます。

 この記事では原文が英語の場合、翻訳があればその翻訳を引用し、なければDeepL翻訳で翻訳しています。

Debugger for Unityの現在の状況

 Debugger for Unityは2020年11月13日に最後に更新されて以降、2年以上更新されていません。私の環境では問題なく動いているんですが、新しいバージョンのUnityでは動かないこともあるようです。

 非推奨 (deprecated)になっていることに調べていた所、GitHubでこの件について言及されていることに気付きました。
github.com
 どうやら既にサポートが終了しているようです。原因は資金的都合と技術的都合のようです。少なくとも3人以上割り当てる必要があるところを誰も割り当てていないため、これ以上サポートを行う予定がないことが分かります。

このまま使い続けることへのリスク

 既に新しいバージョンのUnityを使っている場合、この拡張機能が動作しないことがあるようです。以下のリンク先では、Debugger for Unity v3.0.1以降で、Unity 2020以降や古いUnityでも動作しないことが報告されています。
github.com
 現在問題なく使える場合でも、Unityの更新やVisual Studio Codeの更新で動かなくなる可能性があります。また、Debugger for UnityはC#拡張機能も必須になるので、この更新でも動かなくなる可能性があります。

Unity Documentationでの扱い

 確認したところ、2021.3以降ではUnity での C# コードのデバッグ(原文:Debug C# code in Unity)のページではVisual Studio Codeの項に「UnityはDebugger for Unityエクステンションを正式にサポートしていないため、Visual Studio Codeのサポートは実験的なものとなっています。(原文:Unity’s support for Visual Studio Code is experimental as Unity does not officially support the Debugger for Unity extension.)」という記載が追加されています。
 特にこの記載自体が問題という訳ではないですが、正式サポートされていたものをUnity公式がサポートを取りやめたという意味では、説明不足な気がします。
docs.unity3d.com

乗り換え先

Visual Studio

 WindowsMacでは最もおすすめされる乗り換え先になります。Windowsの場合はVisual Studio 2022(もしくは2019)、Macの場合Visual Studio for Macになります。昔のVisual Studio for MacWindowsに見劣りする部分が多かったのですが、最近ではかなり解消されています。
 有料プランもありますが、Visual Studio Community エディションは無料で使えるため、無料で使いたい場合にも選択肢になります。無料で使う場合も、Microsoft アカウントの作成は必須になります。(ログインせずに使い始めた場合でも、試用期間を超えるとログインを強制されます。)

JetBrains Rider

 Riderは有料のIDEです。個人利用の場合、月額1,600円か年間16,000円が必要になります。プランの詳細については、以下のリンクを参照ください。
www.jetbrains.com
 Riderに関しては以前使っていたのですが、Visual Studioに比べてお金を払ってまで使う優位性を見つけることができませんでした。

Visual Studio Code

 数は多くないとは思いますが、Linuxで無料で開発を続けるにはVisual Studio Codeを使うしかありません。お金をかけても構わない場合、JetBrains Riderを使うのも選択肢に入りますが…
 また、WindowsMacの場合もVisual Studioよりも動作が軽快なVisual Studio Codeを使い続けたい場合は、そのまま使い続けることが選択肢に上がります。

おわりに

 Debugger for Unityが非推奨になっている件について、日本語で書かれている記事が少なかったので気になって調べました。Unity公式には、もう少しきちんと情報を出して欲しいですね!
 個人的には、もう少しVisual Studio Codeを使い続ける予定ですが、頃合いを見てVisual Studioに移行したいですね!

【Unity】ゲーム画面を録画する方法【Unity Recorder】

はじめに

 以前のUnityでプレイ中の画面のスクリーンショットを取る方法 - ゆに帳(Unityの覚え書き)に関連して、ゲーム画面を録画したいときにUnity Recorderを使う方法です。
miyukifueda.hatenablog.com

Recorderのインストール

  1. 上のメニューバーからWindow->Package Managerを選び、Package Managerを選択します。
  2. 開いたウィンドウの左上の「Package: In Project」を「Package: Unity Register」に変更します。
  3. スクロールの下の方にある「Unity Recorder」をインストールします。
Package Manager

ゲーム画面の録画

  1. メニューバーからWindow->General->Reorder->Recorder Windowを選択します。
  2. 開いたウィンドウでAdd Recorder->Movieを選択します。
  3. Recording ModeがManualになっていなければ、Manualに変更します。
  4. 再生ボタン(▶)を選択するとゲームが実行中に切り替わり撮影されます。
Recorder Window

 Frame RateやFormatに関する説明はここでは割愛させていただきます。保存時のファイルサイズや用途に合わせて、適宜変更する必要があります。

録画の保存場所を変えたいとき

 Recorder WindowのPathの左にある「...」ボタンを選択すると、好きなフォルダに保存することが出来ます。

おわりに

 Unity Recorderを使った録画の方法でした。以前の投稿から続きで書こうと思いつつ、遅くなりました。