質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

1回答

1206閲覧

C#スクリプトをunityに入れる方法が分かりません。

MISONO

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2022/07/24 10:53

編集2022/07/26 10:13

前提

unityでゲームを作っています。
ノベルゲームのような機能を実装中にC#のスクリプトをHierarchyの中のものにいれると毎回クラッシュバグが発生します。

また、オンラインで音声のやり取りをできるサービス(PhotonVoice2)も並行して作っていたせいなのか、ゲームをスタートしようとするとこのようなコンパイルエラーが発生しています。
(PhotonManagerはPhotonVoice2を動かすときのC#のスプリクトだと思われます。)

以下のエラーメッセージが発生しました。
Assets\Photon\PhotonUnityNetworking\Demos\DemoSlotRacer\Resources\PhotonUser.cs(16,17): error CS0246: The type or namespace name 'PhotonManager' could not be found (are you missing a using directive or an assembly reference?)

実現したいこと

解決したいこと

  • ノベルゲームのようにスタート画面とテクストファイルに入れた文字を1タップごとに動くようにする

できたら叶えたいこと

  • 音声での通話ができるようになること

発生している問題・エラーメッセージ

Assets\Photon\PhotonUnityNetworking\Demos\DemoSlotRacer\Resources\PhotonUser.cs(16,17): error CS0246: The type or namespace name 'PhotonManager' could not be found (are you missing a using directive or an assembly reference?)

該当のソースコード(C#です。)

using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; using Photon.Realtime; namespace MRTKPhotonTest { /// <summary> /// Photon接続用クラス /// </summary> public class PhotonManager : MonoBehaviourPunCallbacks { /// <summary> /// 自インスタンス /// </summary> private static PhotonManager instance; /// <summary> /// ユーザ用プレハブ /// </summary> [SerializeField] private GameObject UserPrefab; /// <summary> /// 共有基準点 /// </summary> [SerializeField] public Transform SharingBaseTransform; void Awake() { // シングルトン化 if (instance == null) { // 未作成の場合作成 instance = this; DontDestroyOnLoad(this.gameObject); } else { // すでに作成されている場合削除 Destroy(this.gameObject); } } void Start() { // PhotonCloudに接続 Connect(); } public void Connect() { if (!PhotonNetwork.IsConnected) { // 未接続の場合PhotonServerSettings.assetに従って接続 PhotonNetwork.ConnectUsingSettings(); } } /// <summary> /// サーバ接続した場合のCallBack /// </summary> public override void OnConnectedToMaster() { // ルーム名「room」に参加する。なければ作る。 PhotonNetwork.JoinOrCreateRoom("room", new RoomOptions(), TypedLobby.Default); } /// <summary> /// ルーム入室した際のCallBack /// </summary> public override void OnJoinedRoom() { Debug.Log("Entered Photon Room!"); if (UserPrefab != null) { // ユーザオブジェクトを生成する GameObject userObject = PhotonNetwork.Instantiate(this.UserPrefab.name, new Vector3(0f, 0.5f, 0.8f), Quaternion.identity, 0); if (SharingBaseTransform != null) { // 共有基準点の子オブジェクトにする userObject.transform.parent = SharingBaseTransform; } } } } }

試したこと

クラッシュバグについてやこのエラーコードを検索したり、根本の問題なように見えるC#スクリプトをunityに入れる方法を探してみたのですが、難しすぎてよくわからなかったりして解決しませんでした。

環境情報(FW/ツールのバージョンなど)

unityもPhotonVoice2も今日DLしたり、アップデートしたりしているのでその2点は最新だと思います。
パソコンはWindowsです。

補足(PhotonUserについて)

こちらはunityのinspectorにて!マークがついていました。その内容は「No MonoBehaviour scripts in the file, or their names do not match the file name.」と書いてありました。(日本語訳は「ファイルに MonoBehavior スクリプトがないか、その名前がファイル名と一致しません。」です。)
ちなみにこのC#スクリプトはplayerの中に入れようとする(多分アセットしようとしている)とunityがクラッシュバグを起こします。

参考にしたサイトはこちらです。https://xr-physics-work-etc.hatenablog.com/entry/2021/04/11/185913

PhotonUserのソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; namespace MRTKPhotonTest { /// <summary> /// Photonユーザ共有用クラス /// </summary> public class PhotonUser : MonoBehaviourPunCallbacks, IPunObservable { /// <summary> /// PhotonManagerシングルトン取得用 /// </summary> private PhotonManager photonManager; void Start() { photonManager = PhotonManager.instance; // 自分のオブジェクトの場合 if (photonView.IsMine) { // オブジェクト位置設定 SetPlayerTransform(); } if (photonManager.SharingBaseTransform != null) { // 共有基準点がある場合は子オブジェクトに設定する this.transform.parent = photonManager.SharingBaseTransform; } } void Update() { // 自分のオブジェクトの場合 if (photonView.IsMine) { // オブジェクト位置設定 SetPlayerTransform(); } } /// <summary> /// プレイヤー位置設定関数 /// </summary> void SetPlayerTransform() { // カメラ位置にオブジェクトを移動 this.transform.position = Camera.main.transform.position; this.transform.rotation = Camera.main.transform.rotation; } // 今回は未使用(interface継承のため宣言) void IPunObservable.OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { } } }

最後に

皆さまから回答をもらえて非常にうれしいです!!一人で頑張っていて心が折れそうでしたが、真摯に向き合ってくださったおかげでもう少し頑張ろうという気持ちになれました!!ありがとうございます!!!

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

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

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

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

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

KomoriGameDev

2022/07/24 11:21

エラーメッセージを見るかぎりPhotonUser.csで問題が発生しているようなので、PhotonUser.csのソースコードも提示して頂けると良いと思います。
MISONO

2022/07/24 13:48

貴重なご意見下さり誠にありがとうございます!!ただいまPhotonUserの追加をいたしました!今行き詰っているので、このようなご意見一つ一つが非常にうれしいです!
MISONO

2022/07/24 23:48

ABテスト的なのは禁止行為なんですね。こういうの使うの初めてでどこがゲームに詳しいのかわからなくて… ご指摘ありがとうございます!そっちクローズしました!
退会済みユーザー

退会済みユーザー

2022/07/25 00:41

ここでは「禁止」というわけではないです。 https://teratail.com/help#posted-otherservice ただ、ほめられたことではないです。「マルチポスト」でググってみてください。いろいろ意見はありますが、決して歓迎されることではありません。
退会済みユーザー

退会済みユーザー

2022/07/25 00:53 編集

> そっちクローズしました! qiita をクローズするなら、そちらのあなたの質問の一行目に、「Teratail の https://teratail.com/questions/8fwldfd79lssh9 で Q&A を行うのでここはクローズします」ぐらいのことは書かれた方がいいと思います。いきなり何も言わずにクローズするのは、qiita のサイトのあなたの質問を見て少しでも考えてくれた閲覧者もいるであろうことを思えば、マナー的に問題ありと思うのですが。 
dodox86

2022/07/25 01:22

どうでもよい(よくない)ことですが、スプリクトではなく、スクリプト(Script)と言います。あと、コンパイラエラーとは言わず、コンパイルエラーと言う方が一般的です。
MISONO

2022/07/25 01:55 編集

SurferOnWww様 マナーとかあんま詳しくないので、教えてくださりありがとうございます! クローズする前に教えてくれた文章を打ち込みました! 確かにそうやってもやもやする人も、もしかしたらいるかもなので質問そのものを削除しました! これでだれからもそっちのサイトでの記憶に残らなくなったし、覚えていてもうろ覚えだったってことになるのでマナーを人への配慮ととらえるのでしたら最高の手かなと思います!
MISONO

2022/07/25 01:53

dodox86様 言葉の間違いの訂正をありがとうございます!!無知なのでこのような初歩的でも大切な事を教えてくださるのありがたいです!
MISONO

2022/07/25 03:45

ちなみに、マルチポストってなにが悪いのですか? 50件のサイトをみたのですが、2ちゃんやってそうな一部のお年寄りっぽい人がやたら嫌ってるイメージで、大体はあくまでマナーなので個人の自由だよねという意見の印象です。 それと本気で何が良くないのか、そもそもわざわざここは質問への回答をする場所で、ルール違反であれば指摘しても良いと思いますがそのルール違反と同様の悪徳なマナー違反だから指摘したのだとおもうのですが、どこが悪いのでしょうか? 本気で50件のサイトを見ても全く理解できなかったので、マルチポストに悪意が敵意か、何か、思わずやめて!とコメントしてしまうような苦しみを感じるあなたに説明してもらえたら新しい見識が増えるのでありがたいと思います。 私は人が嫌がることはやりたくないので。何卒よろしくお願い申し上げます。
MISONO

2022/07/25 03:50

あと、qiitaについて、クローズがマナー違反の理由が本音を言うと全くもって理解ができないので説明してくれませんか? 何がどのようにダメなのかが全くわからないです。
fiveHundred

2022/07/25 04:19

長々と回答を書いたのに「他サイトで解決しました」と言われて、その書いた時間が無駄になるとか、考えたくもありません。 「先に回答された」というケースもありますが、他サイトの場合はそれに気づかず回答してしまうこともあり得るので、そうならないようにマルチポストは避けたほうがいいでしょう。 クローズについては、クローズするなというわけではなく、クローズする際に「Teratail の~」と書いてほしいということだと思います。
退会済みユーザー

退会済みユーザー

2022/07/25 05:07

> 質問そのものを削除しました! 最低
MISONO

2022/07/25 15:30

なにが最低なんですか?私個人では最高の手だと思います。マナー違反が人を気分を害するものでしたらあなたの方が圧倒的にマナー違反だと思いますしもはや誹謗中傷ですよね? マナー違反どころではないとおもいます。 私は気になるってしまうマナー違反があるなら想起させるものそのものを消した方が圧倒的に人に気分を害さないと思います。 もちろん、ここは様々な方がいて、こだわりという症状がある発達障害の方があるというのは知っています。 もう少し人の気持ちを考えられるようになりましょうね。 私はあなたのような障害者でも差別しませんよ。
MISONO

2022/07/25 15:35

fiveHundred様 丁寧にご回答くださりありがとうございます! リアルだといろんな友達に悩みを相談するって言うのはよくやるとは思いますが… ネットだと赤の他人だから嫌って感じる人がいるっていうことかなぁと思いました。 うーん。 ここでいうように、赤の他人だからイラつくというのが正しいのでしたら、なんで赤の他人にそこまで思考を巡らせなければならないルールというものがあるのでしょうかね? 私は矛盾しているように少し感じてしまいますが、人それぞれ置かれている立場は違いますからね… 勉強になりました! この度はお時間割いていただきありがとうございました!
MISONO

2022/07/25 15:43

SurferOnWwwさんへ ここは課題を解決する場なので、赤の他人にも怒ってしまうぐらい大変な状況にいる気がするあなたにアドバイスをします。 発達障害のこだわりは精神科のお薬で緩和されるらしいです。 それに、発達障害は大人の方がストレスが溜まると聞きました。 いつもいつも大変なんだね。頑張ってるね。こういう場所でたくさん回答してる姿をみていると、褒められたいって気持ちが強く伝わってくるよ。 でも、その褒められたさへのこだわりというのも発達障害のこだわりの一つで、お薬で治るらしいですよ! (一時期医療系にもかじってたので、一般人よりは知っています!) 補足ですが発達障害について、自分の正義感が通らなかった時に怒ってしまうのはこだわりって言います。そのこだわりが強くて、周りが被害を被っている状況を障害っていうんだよ。 でも、あなたが悪いわけじゃなくて、あなたと周りに壁、障害があるから、障害って言われてるの。だからあなたは悪くないんだよ。それだけは覚えていてほしいな。
退会済みユーザー

退会済みユーザー

2022/07/26 01:13

マルチポストがダメなのは上に紹介した https://butao.hatenadiary.com/entry/2015/02/14/021225 の「ぶたお」の例で理解していただけたかな? 削除がなぜダメなのか分かってないようなので一言。 上のコメントで「qiita のサイトのあなたの質問を見て少しでも考えてくれた閲覧者もいるであろう」と書いたけどそれを見て思うところはなかったのでしょうか。 ひょっとしたら、qiita であなたの質問を見た閲覧者が、あなたのために時間と労力を使って回答を書いて、いざアップしようとしたらスレッドが消えていたなんてことがあったかも。 あなたが qiita のスレッドを消さなければ、マルチポスト先(ここ)の url を見て、ここ Terarail で続きができるので qitta の閲覧者が費やした時間と労力は無駄にならなかったかも。 そのあたりには考えが及ばなかったのですかね。 Teratail は「お互いに知識や情報を交換・共有する場所」、「お互いの好意の上に成り立っている助け合いの場」だそうです。qitta も同様ではないかと思います。 あなたが qitta のスレッドで行った完全削除は、あなたのスレッドを見て考えてくれた閲覧者の「好意」を台無しにすることだと思いませんか?
guest

回答1

0

MonoBehaviourを継承するクラスのスクリプトは、ファイル名をクラス名と同じにしないといけない、というルールがあります。
今回の場合、PhotonManagerというクラス名なのにPhotonUser.csというファイル名になっているので、クラス名をPhotonUserにするか、ファイル名をPhotonManager.csにしないといけません。
(MonoBehaviourPunCallbacksと直接MonoBehaviourを継承しているわけではありませんが、その名前からしてMonoBehaviourを継承しているはずなので、このルールが適用されます)


という回答でしたが、違うような気がしたので、以下も確認してください。

PhotonUser.csでPhotonManagerを使おうとしているようですが、今回の場合PhotonManagerはMRTKPhotonTestという名前空間に存在しているので、using MRTKPhotonTest;を追加するか、MRTKPhotonTest.PhotonManagerと記載する必要があります。

投稿2022/07/24 11:18

編集2022/07/24 11:27
fiveHundred

総合スコア9774

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

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

MISONO

2022/07/24 12:43

お答えいただきありがとうございます!!途方に暮れていたので、本当にありがたいです… ファイル名をPhotonManager.csに変えたところコンパイラエラーが1つなくなり、一歩前進した気がします!! そのあとにプレイモードに入った時は3件のコンパイラーエラーがあるといわれました。 想像ですが 1PhotonManagerの名前がおかしい、2MRTKPhotonTestがない が今の問題な気がしています (ちなみにMRTKをダウンロードするためにNET.が必要と言われてNETをダウンロードしたのですが、きちんとダウンロードできていないようでMRTKを再度ダウンロードしてもNETがないのでインストールできませんといわれて、困惑しています…) 現在のコンパイラエラー ① A meta data file (.meta) exists but its asset 'Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Resources/PhotonManager' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it. ② Assets\Photon\PhotonUnityNetworking\Demos\DemoSlotRacer\Resources\PhotonManager.cs(16,17): error CS0246: The type or namespace name 'PhotonManager' could not be found (are you missing a using directive or an assembly reference?) ③ All compiler errors have to be fixed before you can enter playmode! UnityEditor.SceneView:ShowCompileErrorNotification ()
fiveHundred

2022/07/25 02:18

すいません、状況が悪化している気がします。 1つ目の回答で言いたいことは、「PhotonUserのスクリプトをPhotonUser.csにする」「PhotonManagerのスクリプトをPhotonManager.csにする」ということであり、「PhotonUserのスクリプトをPhotonManager.csにする」というわけではありません。 あと、2つ目の回答は両方のスクリプトは共にMRTKPhotonTestに存在しているので、やらなくても特に問題ないはずです。 現状では原因は分かりませんが、とりあえずResourcesという名前のディレクトリにコードを入れるのはやめたほうがいいと思います。 ResourcesはResources.Load()でロードするものを入れるものであり、それ以外のものを入れるとアプリの容量が無駄に増えるだけです。 コードの容量はたかが知れていますが、Resourcesに入れるべきものではありませんし、もしかしたらそれが悪影響を与えている可能性もあるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問