//tips
//Unityでチュートリアル作成
UIからPanelを作成。
canvasのテキストを表示したい領域までpanelをrect transformで縮小。
さらにpanelの下にtextを設置。
Textのrect transformアンカーを右下の上下左右ストレッチに変更し、rect transformの各値に0を入れると、テキストの入力範囲がpanel全体まで広がる。
script(こちら参照:https://qiita.com/simanezumi1989/items/449efc370dd0678add6d)を作成し、TextControllerとし、panelにアタッチ。
さらに、panelのスクリプトに表示されるUI Textに子オブジェクトのtextをドラッグ。
次に、アイコンを導入する。
imageをpanel内に作成し、image sourceに画像を挿入。
この画像を操作するスクリプトとしてClickControllerスクリプトを作成。
ImageにそのClickControllerをアタッチ。
MainSystemという空のオブジェクトを作成し、参照したGameMainSystemスクリプトをアタッチ。
すると、text controllerとclick controllerが出てくるので、Panelとimageオブジェクトをヒエラルキーからアタッチする。
クリックすると、テキスト文言が進むようにしたいのでtextオブジェクトにインスペクターからbuttonのコンポーネントを追加する。
MainSystemをbuttonのon clickの条件の中に入れ、Pushtextを呼び出すようにする。
次にbuttonを3つ作成し、buttonのon clickの条件の中に今度はimageをヒエラルキーからアタッチし、pushbuttonを実行させるようにする。
正確にimageの場所を決めるためにClickControllerのpositionを各ボタンの真上になるように修正する。
List<Vector3> position = new List<Vector3>(){
new Vector3(-300,400,0),
new Vector3(0,400,0),
new Vector3(300,400,0),
};
//imageの点滅
Image画像を点滅させるスクリプトはUpdateで呼び出されるたびに透明度を変化させる下記により表される。
clickImage.color = new Color(R, G, B, A)となっており、Aの部分を時間ごとに変化させている。
void Update()
{
clickImage.color = new Color(1, 1, 1, Mathf.PingPong(Time.time, 1));
}
Time.timeにはアプリケーション起動からの経過時間[ms]が格納されており、タイマーの役割を果たす。
Mathf.PingPongは第1引数に指定した値(Time.time)を、0から第2引数(1)で指定した値の間で設定し、第一引数が上限までいったら跳ね返った値を返す。
Mathf.PingPong(Time.time, 2)なら第1引数を4にすれば0、3にすれば1が値として返ってくる。
これを使ったスクリプトを下記に記載する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class pinpon : MonoBehaviour
{
public float nowPosi;
void Start()
{
nowPosi = this.transform.position.x;
}
void Update()
{
transform.position = new Vector3(nowPosi + Mathf.PingPong(Time.time, 1.0f), transform.position.y, transform.position.z);
}
}
<下記参照>
https://www.youtube.com/watch?v=CGKmi8zgM2s
https://qiita.com/simanezumi1989/items/449efc370dd0678add6d