質問: Uniytを始めとしてプログラムソフトについては、全くの初心者で勉強を始めたばかりです。 いろいろとネットを検索して、第1段階としてコンソールに、「Hello, World.」と表示することには成功しました。 第2段階として、「GUI.TextArea に「Hello, World.」を表示」というテキストがありましたので、そこに記載されているとおりだと思うのですが、次のような作業を実行しました。 ( 見てわかるUnity5 C# 超入門 ) 1 プロジェクトは、先に「Hello, World.」と表示することには成功したプロジェクトをそのまま使用しました。 2 「Hello, World.」の際に使用したスクリブトに次の1行を加えました。 コードの文言は、テキストをコピペしました。 GUI.TextArea (new Rect (5, 5, Screen.width-10, 50), "Hello, World."); 3 作成されたスクリプトを「MonoDevelop」コピペした結果は次の通りです。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class HelloWorld : MonoBehaviour { // Use this for initialization void Start () { Debug.Log("Hellow, World."); } // Update is called once per frame void Update () { GUI.TextArea (new Rect (5, 5, Screen.width-10, 50), "Hello, World."); } } 4 この段階で、Build作業の成否を確かめるために、「F7」キーを押しましたが、「Build successful」との表示が出ましたので保存してUnityに戻ったところその通りに表示されており、欄外下部にはなんの表示も出ていませんでした。 5 そこで、作成したスクリプトをMain Camera にドロップしたところ欄外に表示がでたので、改めてコンソール画面を開いたところ次のような表示がありました。 Hellow,Wrold. UnityEngine.Debug:Lpg(object) ArgumentException;You can only call GUl functions from inside onGUI, UnityEngine.GUIUtility.CheckOnGUI () (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUIUtility.cs:357) ArgumentException;You can only call GUl functions from inside onGUI, UnityEngine.GUIUtility.CheckOnGUI () (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUIUtility.cs:357) UnityEngine.GUI.get_skin () (at C:/buildSlave/unlty/build/Runtime/IMGU1/Managed/GUI.cs:58) UnityEnqine.GUI.TextArea (Rect position. System.Strinq text) (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUI.cs:585} HelloWorld.Udate () (atAssets/HelloWorld.cs:14) 6 何を指摘されているのかさっぱりわからないので、ネットで検索をしたのですが、参考になるようなサイトを見つけることはできませんでした。 7 パソコン環境は次の通りです。 Windows 10 Pro 64 bit Unity 2017.1.0f3 Personal (64 bit) 8 勝手なお願いですが、初心者でも対処できるような形で教えていただきたく、よろしくお願い至します。
回答: 私の環境では質問者様のコードを実行すると ArgumentException: You can only call GUI functions from inside OnGUI. とエラーが出ました。 エラーのとおり 「GUI系の関数(ここではGUI.TextArea(...))はOnGUI()の中に書いてね」 という意味です。 下記のようにすると動きました。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Use this for initialization void Start () { Debug.Log("Hellow, World."); } // Update is called once per frame void Update () { } void OnGUI(){ GUI.TextArea (new Rect (5, 5, Screen.width - 10, 50), "Hello, World."); } } ``` !実行結果 下記リンクが参考になるかと思います。 【Unity/C#】OnGUI関数でボタンやラベルを表示する UnityをC#で超入門してみる #4 GUIの章