「Unity/UIText」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
|||
| (同じ利用者による、間の26版が非表示) | |||
| 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しておかないと。 | ||
== | ==UITextを制御する方法は2つ== | ||
#Textオブジェクトに直接Scirptを入れこむ方法 | |||
#Textオブジェクトを外部のCanvasScriptから制御する方法 | |||
==1つ目:Textに直接Scriptを入れ込み制御== | |||
#UITextを配置 | #UITextを配置 | ||
#UITextを選択してinspectorを開く | #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を選択してinspectorを開く | |||
#一番上の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; | ||
| 15行目: | 50行目: | ||
using UnityEngine.UI; | using UnityEngine.UI; | ||
public class MessageText : MonoBehaviour { | 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; | |||
} | |||
} | } | ||
# | #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だから不要かもだけど | |||
==部分的に文字の太さを変える== | |||
<pre> | |||
Text name.text = "<b>hoge</b>hoge"; | |||
Text name.supportRichText = true; // defaultでonだから不要かもだけど | |||
</pre> | |||
==部分的に文字の大きさを変える== | |||
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/ | |||
2025年8月17日 (日) 08:19時点における最新版
Text配置
- メインメニュー/GameObject/UI/Textを選択すると"New Text"がCanvas上に設置される
- そのまま再生
- Project Saveだと消えるかも。File/Sence Saveしておかないと。
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を選択してinspectorを開く
- 一番上のTextというところをMessageTextなどと変えてエンターキーを押す(エンターを押さないと変更できない)
- AddComponentでNewScriptを選択して"MessageText"と入れてMessageText.csファイルを作る
- AddComponentにMessageTextが登録されていることを確認(登録されていなければ、MessageText.csを追加する
- 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;
}
}
- 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 = "<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ファイルにテキストデータを記述
string text = (Resources.Load("TextData", typeof(TextAsset)) as TextAsset).text;
GameObject.Find("Text").GetComponent<Text>().text = text;