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

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

新規登録して質問してみよう
ただいま回答率
85.50%
バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Unity

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

Q&A

解決済

2回答

2197閲覧

UnityでのText読み込みについて

tarikihongan

総合スコア26

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Unity

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

0グッド

1クリップ

投稿2020/01/05 13:28

前提・実現したいこと

ソフトを使ってリアルタイムで生体信号の値をTextに書き込み、それをUnityで読み込んで値によって画面が切り替わるシステムを開発しています。
生体信号を書き込むソフトのほうがバックグラウンドでは動かないため、Unityのほうはバックグラウンドでも動いてほしいと考えています。しかし、PlayerSettingの「Run In BackGround」のチェックをオンにしても、ゲームは動くもののテキストの読み込みはバックグラウンドでは行ってくれませんでした。
どんなことでもいいので教えていただきたいです!よろしくお願いします!

該当のソースコード(Textを読み込んでいる部分のコードです)

TextAsset textasset = new TextAsset(); //テキストファイルのデータを取得するインスタンスを作成
textasset = Resources.Load("Test", typeof(TextAsset)) as TextAsset; //Resourcesフォルダから対象テキストを取得
string TextLines = textasset.text; //テキスト全体をstring型で入れる変数を用意して入れる
textMessage = TextLines.Split('\n');

rowLength = textMessage.Length - 1;//一番下の行の数を取り出したい num = long.Parse(textMessage[rowLength-1]);//textをfloatに変換

試したこと

・lockフォルダを作成
・Run In BackGroundにチェック

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

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

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

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

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

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

simapiko

2020/01/06 08:53

その辺りやった事が無いので詳しくはないですが、そもそもResourcesフォルダはビルド時にアプリに格納されるので、基本的に外部から差し替え出来ないはずだったと思います。(エディターだとどうなるか分からないですが) 外部から書き換えたファイルを読み込みたいのでしたら素直にFileクラス等使う方が早いかと思います。
tarikihongan

2020/01/06 09:15

Resourceで手軽にやろうとしたのが間違いだったのですね…! Fileクラス調べながらやってみます!ありがとうございます
simapiko

2020/01/06 09:33

ざっと調べてFileクラスで例えてしまいましたが、「Unity 外部ファイル 読み込み」とかで検索すれば他にも出てきますので色々と調べてご自身に合った方法をご活用ください。 話がずれてしまいますが、Resourcesフォルダーは今回みたいな低容量なら大して影響ないですが、上記の書き換えられない、ビルド時間が長くなる諸々の理由でUnityからは非推奨みたいです(絶対使うなというわけではないですが)。気になったら調べてみてください。
tarikihongan

2020/01/07 08:47

Fileクラスで作り直したところ、できました!!本当にありがとうございました!!
tarikihongan

2020/01/07 08:48

ベストアンサーにしたいのにできない…
simapiko

2020/01/07 09:56 編集

ご自身で解決されているので、解決法を記載し自己解決とし質問を解決済みにしてしまって大丈夫かと思います。 ↓参考 https://teratail.com/help#resolve-myself (解決方法を探しに検索から飛んできた第3者がこの質問を見る事があるかもしれないので、分かりやすいようにソースコードが記載してあるといいかと思います。)
guest

回答2

0

自己解決

Resorceフォルダに入れるのではなく、Fileクラスで作りました。
コードは要望があれば載せます

投稿2020/01/08 14:43

tarikihongan

総合スコア26

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

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

0

トリガーになるものがないからですかね?
どのくらいの頻度かわかりませんがUpdate()内でやってみたらどうでしょうか。

C#

1 2private text asset = new TextAsset(); 3 4void FixedUpdate() { 5 textasset = Resources.Load("Test", typeof(TextAsset)) as TextAsset; 6 string TextLines = textasset.text; //テキスト全体をstring型で入れる変数を用意して入れる 7 textMessage = TextLines.Split('\n'); 8 rowLength = textMessage.Length - 1; 9 num = long.Parse(textMessage[rowLength-1]); 10}

投稿2020/01/05 14:18

madone99

総合スコア1855

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

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

tarikihongan

2020/01/06 08:18

コメントありがとうございます! 私の説明不足ですみません、元からUpdate()内でやっていたのですが、バックグラウンドでは読み込んでくれませんでした…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問