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

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

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

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

Unity3D

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

Q&A

解決済

1回答

2685閲覧

unity 実行した時にフリーズしてしまいます

doracyan

総合スコア6

C#

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

Unity3D

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

0グッド

0クリップ

投稿2020/02/16 17:17

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
unityのresourcesにpng fileをimportして、プレファブを自動生成するスクリプトを書きました。
実行したらフリーズをおこします。原因をおしえてください。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

フリーズして動きません

c# ソースコード ```using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CreateManager : MonoBehaviour { // Start is called before the first frame update void Start() { for (int i = 0; i < 4; i++) { System.IO.FileSystemWatcher watchman = new System.IO.FileSystemWatcher(); //監視するディレクトリを指定 watchman.Path = @"C:\Users\pokem\aquarium\Assets\Resources"; //*.txtファイルを監視、すべて監視するときは""にする watchman.Filter = "*.png"; //ファイル名とディレクトリ名と最終書き込む日時の変更を監視 watchman.NotifyFilter = System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName | System.IO.NotifyFilters.LastWrite; //サブディレクトリは監視しない watchman.IncludeSubdirectories = false; //必要に応じてバッファサイズを変更 //watcher.InternalBufferSize = 4096 //同期的に監視を開始する System.IO.WaitForChangedResult changedResult2 = watchman.WaitForChanged(System.IO.WatcherChangeTypes.All); if (changedResult2.TimedOut) { Console.WriteLine("タイムアウトしました。"); return; } //変更があったときに結果を表示する switch (changedResult2.ChangeType) { case System.IO.WatcherChangeTypes.Created: Console.WriteLine( "ファイル 「" + changedResult2.Name + "」が作成されました。"); try { GameObject obj = (GameObject)Resources.Load("Quad"); Quaternion rote = Quaternion.Euler(0.0f, 45.0f, 90.0f); GameObject instance = (GameObject)Instantiate(obj, new Vector3(5.0f, 5.0f, 5.0f), Quaternion.identity); var rend = instance.GetComponent<Renderer>(); rend.material.mainTexture = Resources.Load("changedResult.Name") as Texture; } catch (Exception e) { } break; } } } // Update is called once per frame void Update() { } } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

fiveHundred

2020/02/17 02:28

ソースコードは以下のように「```」の中に記載してください。 ```C# public class Foo : MonoBehaviour { } ```
guest

回答1

0

ベストアンサー

C#

1watchman.WaitForChanged(System.IO.WatcherChangeTypes.All);

上記は変更されるまで待機するような関数だそうですが、Unityは基本的にシングルスレッドで動作しているので、その待機中は他の処理も停止することになるため、フリーズします。

投稿2020/02/17 02:37

fiveHundred

総合スコア10151

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

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

doracyan

2020/02/17 04:02

ありがとうございます!Unityでsystem IO filesystemwatcherを使う以外に file 検知 検知をトリガー として何かをするにはどのようにすればいいのでしょうか?
fiveHundred

2020/02/17 04:27

一定時間ごとにファイルの一覧を取得し、それが変更されていないかをチェックすればよろしいかと思います。
doracyan

2020/02/17 05:06

ありがとうございます、コードを書く上でなにか参考になるサイトなどあるでしょうか。
fiveHundred

2020/02/17 05:52

「C# ディレクトリ ファイル一覧」で検索してみてください。
doracyan

2020/02/17 10:24

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問