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

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

ただいまの
回答率

87.77%

Unityでのスクリプトの作成について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,087

score 13

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 勝手なお願いですが、初心者でも対処できるような形で教えていただきたく、よろしくお願い至します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

私の環境では質問者様のコードを実行すると
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の章

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る