facebook twitter hatena line email

「Unity/UIText」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(TextのScript制御)
(部分的に文字の太さを変える)
 
(同じ利用者による、間の24版が非表示)
行1: 行1:
 
==Text配置==
 
==Text配置==
#GameObject/UI/Textを選択すると"New Text"がCanvas上に設置される
+
#メインメニュー/GameObject/UI/Textを選択すると"New Text"がCanvas上に設置される
 
#そのまま再生
 
#そのまま再生
 
*Project Saveだと消えるかも。File/Sence Saveしておかないと。
 
*Project Saveだと消えるかも。File/Sence Saveしておかないと。
  
==TextのScript制御==
+
==UITextを制御する方法は2つ==
 +
#Textオブジェクトに直接Scirptを入れこむ方法
 +
#Textオブジェクトを外部のCanvasScriptから制御する方法
 +
 
 +
==1つ目:Textに直接Scriptを入れ込み制御==
 +
#UITextを配置
 +
#UITextを選択してinspectorを開く
 +
#AddComponentからTextScript.csを作成する
 +
#そのscriptのStartメソッド内に以下を記述
 +
this.GetComponentInChildren<Text>().text = "hoge";
 +
#再生すると配置したUITextのNewTextがhogeになる
 +
 
 +
==2つ目:Textを外部のCanvasScriptから制御==
 +
#UITextを配置
 +
#Canvasを選択してinspectorを開く
 +
#AddComponentからCanvasScript.csを作成する
 +
#Canvas側のscriptに記述
 +
using System.Collections;
 +
using System.Collections.Generic;
 +
using UnityEngine;
 +
using UnityEngine.UI;
 +
public class CanvasScript : MonoBehaviour {
 +
public Text myText;
 +
void Start () {
 +
myText.text = "hoge";
 +
}
 +
void Update () {
 +
}
 +
}
 +
#Canvasのinspectorを開きCanvas下のTextを"CanvasのinspectorのmyText"へドラッグ
 +
#再生すると配置したUITextのNewTextがhogeになる
 +
 
 +
参考:http://hiyotama.hatenablog.com/entry/2015/04/27/060000
 +
 
 +
==カスタムTextのScript制御==
 
#UITextを配置
 
#UITextを配置
 
#UITextを選択してinspectorを開く
 
#UITextを選択してinspectorを開く
#一番上のTextというところをTextMessageなどと変えてエンターキーを押す(エンターを押さないと変更できない)
+
#一番上のTextというところをMessageTextなどと変えてエンターキーを押す(エンターを押さないと変更できない)
 
#AddComponentでNewScriptを選択して"MessageText"と入れてMessageText.csファイルを作る
 
#AddComponentでNewScriptを選択して"MessageText"と入れてMessageText.csファイルを作る
 +
#AddComponentにMessageTextが登録されていることを確認(登録されていなければ、MessageText.csを追加する
 
#MessageText.csに以下の通りに
 
#MessageText.csに以下の通りに
 
  using System.Collections;
 
  using System.Collections;
行24: 行59:
 
  }
 
  }
 
  }
 
  }
#呼び出しのButtonイベント内に
+
#Canvas側のscriptに記述
  this.GetComponent<MessageText>().text = "Click!";
+
  public MessageText messageText;
などを追加
+
myMessageText.text = "hoge";
 +
or
 +
messageText.GetComponent<MessageText>().text = "Click!";
 +
 
 +
==部分的に色を変える==
 +
Text name.text = "<color=#ff0000>hoge</color>hoge";
 +
Text name.supportRichText = true; // defaultでonだから不要かもだけど
 +
 
 +
==部分的に文字の太さを変える==
 +
Text name.text = "<b>hoge</b>hoge";
 +
Text name.supportRichText = true; // defaultでonだから不要かもだけど
 +
 
 +
==部分的に文字の大きさを変える==
 +
Text name.text = "<size=200%>hoge</size>hoge";
 +
Text name.supportRichText = true; // defaultでonだから不要かもだけど
 +
 
 +
公式:https://docs.unity3d.com/ja/2022.3/Manual/UIE-supported-tags.html
 +
 
 +
==テキスト幅取得==
 +
Text text1 = GetComponent<Text>();
 +
text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight);
 +
text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight);
 +
Debug.Log(text1.preferredWidth);
 +
 
 +
参考:http://kan-kikuchi.hatenablog.com/entry/Text_Preferred
 +
 
 +
==3Dで使うテキスト==
 +
[[Unity/3d/3DText]] [ショートカット]
 +
 
 +
==テキストをロードして表示==
 +
Assets/Resources/TextData.txtファイルにテキストデータを記述
 +
<pre>
 +
string text = (Resources.Load("TextData", typeof(TextAsset)) as TextAsset).text;
 +
GameObject.Find("Text").GetComponent<Text>().text = text;
 +
</pre>
 +
 
 +
参考:http://studio-jpn.com/unity-textasset/

2024年6月11日 (火) 23:31時点における最新版

Text配置

  1. メインメニュー/GameObject/UI/Textを選択すると"New Text"がCanvas上に設置される
  2. そのまま再生
  • Project Saveだと消えるかも。File/Sence Saveしておかないと。

UITextを制御する方法は2つ

  1. Textオブジェクトに直接Scirptを入れこむ方法
  2. Textオブジェクトを外部のCanvasScriptから制御する方法

1つ目:Textに直接Scriptを入れ込み制御

  1. UITextを配置
  2. UITextを選択してinspectorを開く
  3. AddComponentからTextScript.csを作成する
  4. そのscriptのStartメソッド内に以下を記述
this.GetComponentInChildren<Text>().text = "hoge";
  1. 再生すると配置したUITextのNewTextがhogeになる

2つ目:Textを外部のCanvasScriptから制御

  1. UITextを配置
  2. Canvasを選択してinspectorを開く
  3. AddComponentからCanvasScript.csを作成する
  4. Canvas側のscriptに記述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CanvasScript : MonoBehaviour {
	public Text myText;
	void Start () {
		myText.text = "hoge";
	}
	void Update () {
	}
}
  1. Canvasのinspectorを開きCanvas下のTextを"CanvasのinspectorのmyText"へドラッグ
  2. 再生すると配置したUITextのNewTextがhogeになる

参考:http://hiyotama.hatenablog.com/entry/2015/04/27/060000

カスタムTextのScript制御

  1. UITextを配置
  2. UITextを選択してinspectorを開く
  3. 一番上のTextというところをMessageTextなどと変えてエンターキーを押す(エンターを押さないと変更できない)
  4. AddComponentでNewScriptを選択して"MessageText"と入れてMessageText.csファイルを作る
  5. AddComponentにMessageTextが登録されていることを確認(登録されていなければ、MessageText.csを追加する
  6. MessageText.csに以下の通りに
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MessageText : MonoBehaviour {
	public string text = "";
	// Use this for initialization
	void Start () {
	}
	// Update is called once per frame
	void Update () {
		this.GetComponent<Text>().text = text;
	}
}
  1. Canvas側のscriptに記述
public MessageText messageText;
myMessageText.text = "hoge";

or

messageText.GetComponent<MessageText>().text = "Click!";

部分的に色を変える

Text name.text = "<color=#ff0000>hoge</color>hoge";
Text name.supportRichText = true; // defaultでonだから不要かもだけど

部分的に文字の太さを変える

Text name.text = "hogehoge";
Text name.supportRichText = true; // defaultでonだから不要かもだけど

部分的に文字の大きさを変える

Text name.text = "<size=200%>hoge</size>hoge";
Text name.supportRichText = true; // defaultでonだから不要かもだけど

公式:https://docs.unity3d.com/ja/2022.3/Manual/UIE-supported-tags.html

テキスト幅取得

Text text1 = GetComponent<Text>();
text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight);
text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight);
Debug.Log(text1.preferredWidth);

参考:http://kan-kikuchi.hatenablog.com/entry/Text_Preferred

3Dで使うテキスト

Unity/3d/3DText [ショートカット]

テキストをロードして表示

Assets/Resources/TextData.txtファイルにテキストデータを記述

string text = (Resources.Load("TextData", typeof(TextAsset)) as TextAsset).text;
GameObject.Find("Text").GetComponent<Text>().text = text;

参考:http://studio-jpn.com/unity-textasset/