テキストスクリプト
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour {
public string[] scenarios;
[SerializeField] Text uiText;
[SerializeField][Range(0.001f, 0.3f)]
float intervalForCharacterDisplay = 0.05f;
private string currentText = string.Empty;
private float timeUntilDisplay = 0;
private float timeElapsed = 1;
private int currentLine = 0;
private int lastUpdateCharacter = -1;
// 文字の表示が完了しているかどうか
public bool IsCompleteDisplayText
{
get { return Time.time > timeElapsed + timeUntilDisplay; }
}
void Start()
{
SetNextLine();
}
void Update ()
{
// 文字の表示が完了してるならクリック時に次の行を表示する
if( IsCompleteDisplayText ){
if(currentLine < scenarios.Length && Input.GetMouseButtonDown(0)){
SetNextLine();
}
}else{
// 完了してないなら文字をすべて表示する
if(Input.GetMouseButtonDown(0)){
timeUntilDisplay = 0;
}
}
int displayCharacterCount = (int)(Mathf.Clamp01((Time.time - timeElapsed) / timeUntilDisplay) * currentText.Length);
if( displayCharacterCount != lastUpdateCharacter ){
uiText.text = currentText.Substring(0, displayCharacterCount);
lastUpdateCharacter = displayCharacterCount;
}
}
void SetNextLine()
{
currentText = scenarios[currentLine];
timeUntilDisplay = currentText.Length * intervalForCharacterDisplay;
timeElapsed = Time.time;
currentLine ++;
lastUpdateCharacter = -1;
}
}
test
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour {
public bool is_pressing = false;
void OnTriggerEnter(Collider other)
{
if ( other.gameObject.tag == "Player"){
is_pressing = true;
}
}
void OnGUI () {
if (is_pressing) {
GUI.Box (new Rect (10, 10, 100, 90), "Menu");
}
}
}