プラベのVRChatブログ

VRChatで楽しく過ごすためのTipsをまとめてます。

Unity U#/C#でクラス参照できないスクリプトがあるときの対策

Asset/ 配下に作ったU#スクリプトから、Package/ 配下にあるU#スクリプトのクラスを参照できない場合の対策についての記事です。

Unityである必要はないです。個人的につまづいたのでメモ。

トラブル概要

Asset/ 配下に作ったU#スクリプトから、Package/ 配下にあるU#スクリプトのクラスを参照しようとしたが、using で指定しても名前解決されずエラーとなる。

対処方法

1. Asset/ 配下に作ったU#スクリプトと同じフォルダに、アセンブリ定義ファイルを作成する
2. Package/ 配下にあるU#スクリプトアセンブリ定義ファイルを編集する(作成する)

方法1

アセンブリ定義ファイル (*.asmdef) を Asset/ 配下のU#スクリプトと同じフォルダに作成する。
"Assembly Definition References" 内に、Package/ 配下の参照したいU#スクリプトアセンブリ定義ファイルを追加する。

方法2

Package/ 配下にある、参照したいU#スクリプトを定義したアセンブリ定義ファイル (*.asmdef) を編集する。なければ新規に作成する。
"Auto Referenced" をチェック (true) にすることで、Asset/ 配下からもクラス参照ができるようになる。

謝辞

本件の悩み解決にあたり、みみー様よりご指導を賜りました。
みみー様、大変にありがとうございます!
github.com

みみー様製の Manual ObjectSync はとても使いやすくて便利です。
github.com