🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3463閲覧

UnityでAssembly-CSharp.dllからAssembly-CSharp-Editor.dllのコードを参照する方法

ateta

総合スコア3

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/02/21 08:37

編集2021/02/21 08:38

Assebmly-CSharpからAssembly-CSharp-Editorのコードを参照する方法が知りたいのですが、そのような方法は存在しますでしょうか?

該当するファイルをEditorフォルダ内に配置すれば(Assebmly-CSharp.dllからAssembly-CSharp-Editor.dllに移動すれば)当然参照できますが、
Assebmly-CSharp.dllからAssembly-CSharp-Editor.dllへのアクセスはできないのでしょうか?

Assebmly-CSharp.dllからUnityEditor.dllへはアクセス可能なので、Assembly-CSharp-Editor.dllへもアクセスできる手法が存在すると思うのですが、ご存知であれば教えていただきたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2021/02/21 08:54

そこまで詳しくないのですが、ざっと調べた感じだと「Assembly-CSharp-Editor.dllはEditorフォルダのスクリプトをコンパイルしたもの」ということらしいのですが、それで合っていますでしょうか? また、そのようなことをして具体的に何がしたいのでしょうか? 「Editorフォルダのスクリプトはエディタ上のみで動作するもの」で、「ビルド後はEditorフォルダのスクリプトは全て使えなくなる」ため、Assembly-CSharp-Editor.dllは何も動作しなくなるか、そもそも存在しないかのどちらかになると思います。 したがって、Assebmly-CSharp.dllからAssembly-CSharp-Editor.dllへのアクセスは出来ても無意味だと思うので、もしそうでなければ具体的に何がしたいのかを示してください。
ateta

2021/02/21 09:13

「Assembly-CSharp-Editor.dllはEditorフォルダのスクリプトをコンパイルしたもの」で合っていると思います。 MonoBehaviour.Reset()内でAssembly-CSharp-Editor.dllのコードを参照したいため、このような質問を致しました。 (MonoBehaviour.Reset()はEditorモードでしか実行されません)
guest

回答1

0

ベストアンサー

こちらによれば、Assembly-CSharp.dllのコンパイルの成功後にAssembly-CSharp-Editor.dllのコンパイルが行われるため、Assembly-CSharp-Editor.dllをAssembly-CSharp.dllで使うことは出来ないそうです。
ただ、こちらこちらによれば、Assembly-CSharp.dllとは別名のdllファイルを作成することが出来るそうです。
Editorフォルダ内で「Assets > Create > Assembly Definition」によって、.asmdefファイルを作成する(設定はデフォルトのまま)と、この機能が働いて呼び出せない旨のエラーが無くなりましたが、どうでしょうか。

投稿2021/02/21 10:23

fiveHundred

総合スコア10152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ateta

2021/02/21 15:06

ご回答ありがとうございます。 これだけのために新たにdllを作成するのは少し大げさなのと、今度はAssembly-CSharp.dllにアクセスできない問題が発生するのでちょっと気が進まないですね・・・
fiveHundred

2021/02/22 00:03

> これだけのために新たにdllを作成するのは少し大げさ この機能で出来たdllの管理はAssembly-CSharp.dllなどと同じく、Unity側で勝手に管理してくれるので、特に不便になるとは思いませんが、どうでしょう。 > 今度はAssembly-CSharp.dllにアクセスできない問題が発生する 「順番にdllを参照させる必要がある」となっている以上、それに逆行することは仕組み上無理です。 実は方法があるのかもしれませんが、少なくとも私は知りませんし、調べても出てきませんでした。 ただそれを調べている際に、以下のURLにて、interfaceを使えばよいと出てきたのですが、これで解決しますでしょうか。 https://stackoverflow.com/questions/6928387/how-to-solve-circular-reference
ateta

2021/02/22 13:37

interfaceを使用してコード的に循環参照しないようにする手法は初めて知りました。 Assembly-CSharp.dllからAssembly-CSharp-Editor.dllを参照したい場面はそこまでないので、dllを用意する手法で行いたいと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問