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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

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

Q&A

解決済

1回答

786閲覧

文字が出力されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

0グッド

0クリップ

投稿2017/10/01 13:03

編集2017/10/01 15:19

###前提・実現したいこと
テキストアセットを読み込んでいるのですが、ファイルの内容がコンソールに出力されません。
ご教授のほどよろしくお願いします。

###該当のソースコード

C#

1 void Start () { 2 TextAsset sample = Resources.Load("Sample") as TextAsset; 3 string s = sample.text; 4 Debug.Log (s); 5 } 6

もちろん、テキストファイルには文字があり、保存されています。
読み込みエラーも起きてないので、読み込めているはずだと思うのですが。

下記のような出力となります。※1行目が空行の出力です。

UnityEngine.Debug:Log(Object) Sample:Start() (at Assets/Sample.cs:13)

###追記

C#

1 void Start () { 2 TextAsset sample = Resources.Load("Sample") as TextAsset; 3 Debug.Log (sample); 4 } 5

上記で試した所、下記のようなコンソールとなりました。
※1行目が空行の出力です。

UnityEngine.Debug:Log(Object) Sample:Start() (at Assets/Sample.cs:12)

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

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

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

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

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

IShix

2017/10/01 15:09 編集

TextAsset sample = Resources.Load("Sample") as TextAsset; Debug.Log (sample); こうだと何が出力されますか?
guest

回答1

0

ベストアンサー

C#

1TextAsset sample = Resources.Load("Sample") as TextAsset; 2Debug.Log (sample);

このように書いてnullがデバッグログに表示される場合、取得できていないということです。as は代入不可の場合nullを返す演算子で型変換などしません。

nullの場合、以下を確認してみてください。

  1. Resourcesフォルダのスペルが間違っていないか?
  2. Sampleのスペルが間違っていないか?
  3. Sampleの設置場所が*/Resources/Sampleになっているか?
  4. 使用できないファイルを使っていないか?
  5. [追記]テキストの文字コードがUTF-8になっているか?

[Text Asset の対応]

.txt .html .htm .xml .bytes .json .csv .yaml .fnt

最後に 中身が空ではないか?

上記内容が含まれる最小構成のサンプルが入ったプラグインを作ってみました

ダウンロードして、Unityのプロジェクトを開いた状態でダブルクリックしてください。
名前の被りをチェックし問題無さそうでしたらインポートして中に含まれるシーンをクリックし実行してみてください。

http://35.gigafile.nu/1009-b48aef25a200f2d3e2760c0a45058e99f

投稿2017/10/01 15:17

編集2017/10/02 04:06
IShix

総合スコア1724

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

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

退会済みユーザー

退会済みユーザー

2017/10/01 15:29

ご回答ありがとうございます。 ご指摘いただいた所をチェックしましたが、問題なさそうです。 また、下記のようにワザとファイル名を間違ったものにしてみると、 ---------- TextAsset sample = Resources.Load("SampleA") as TextAsset; Debug.Log (sample); ---------- コンソールに ---------- Null UnityEngine.Debug:Log(Object) Sample:Start() (at Assets/Sample.cs:12) ---------- のように、1行目がNullと出力されます。 今回のバグでは、1行目が空行になるのが不思議です。 もちろん、Sample.txtファイルには下記のように文字が入ってます。 (アセットのSampleをダブルクリックして、MonoDevelopでファイルの中身を確認しているので、確実 にファイル内に文字が入っていると思います。また、エクスプローラからファイルを開いて確認もしています。(メモ帳で開くと、ひらがなが文字化けしてますが。)) ---------- aaaaa あああ ----------
退会済みユーザー

退会済みユーザー

2017/10/01 15:35 編集

同じResourcesフォルダ内にキューブのプレハブを登録して、 テキストアセットを読み込んでログを取っているコードの下で、 Instantiate (Resources.Load ("Cube") as GameObject); と書いたところ、プレハブが複製されているのも確認しました。 Resourcesフォルダのスペルミスでもないようです。 また、アセットにResourcesフォルダは1つしかありません。
IShix

2017/10/01 15:49

僕の方ではできたのでその内容をプラグイン化してみました。 本文に追記してますのでそこからダウンロードしインポートしてみてください。
退会済みユーザー

退会済みユーザー

2017/10/01 16:10

すみません、いただいたパッケージなんですが、何度も試したんですが、 インポートが出ませんでした。 パッケージファイルと同階層のフォルダに空のetcというフォルダが作られました。 また、わかったことがありました。 aaaaだと出力できて、日本語のみにすると空行の出力となりました。 UTF-8にすると、日本語でも出力できました。 Unityでは、基本的に、もしくはどこかの設定で、ファイルをUTF-8に扱うように 設定されているのでしょうか?(もしご存知でしたら教えていただきたいです。) いただいたプラグインを試せなくて申し訳ないですが、 作成していただきありがとうございました。
IShix

2017/10/01 18:53 編集

ひらけなかったんですね。バージョンですかね?すみません>< なるほど!確かにUnityではUTF-8 BOM付きじゃないとC#側で文字化けするってあったと思います。文字化けして出力されてないかもしれませんね。 C#にUTF8Encodingって関数があるのでそれを使えばいけるかもしれませんが、実際のデータと変換後のデータでメモリを2重に消費しそうなのでテキストエディタの設定を変更した方がいいかもしれません。 できない理由などありますか?
退会済みユーザー

退会済みユーザー

2017/10/02 00:32

ご回答ありがとうございます。 C#にUTF8Encodingの関数があるんですね。 いえ、テキストエディタの設定で済みます。 どこかで簡単にUnityで扱う文字コードを設定するメニューがあれば知りたいと思い、質問させていただきました。 Unityでは、そのような設定はなく、UTF-8 BOM付きと決まっているのですね。 ありがとうございました。
IShix

2017/10/02 04:07 編集

質問の内容がうまく理解できていなかったようですみません。 Unity Editor上で文字コードを変換する方法は無いと思います。 自作してファイルの文字コードを変更するエディタ拡張ならできると思います。 ベストアンサーに選んでいただきありがとうございます。 同じような方がこのページに訪れるかもしれないのでこの事も追記しておきます。
退会済みユーザー

退会済みユーザー

2017/10/02 13:11

ご回答ありがとうございます。 なるほど、Unity Editor上で文字コードを変換する方法は無いのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問