1. zeffy1014
Changes in body
Source | HTML | Preview
@@ -1,91 +1,91 @@
備忘録です。
# 目的
時計アプリを作る際に必要不可欠な、リアルタイム更新されるテキスト系の時計を用意する。
# テキストを用意する
Hierarchyビュー上で右クリック -> UI -> Text で
Canvas内にTextが生成される。
ゲームビューを確認しつつテキストの位置やサイズ等を設定する。(詳細は割愛する)
# コードを書く
Projectビュー上のAssetsで右クリック -> Create -> C# Script で
C#スクリプトを生成してコードを書く。
```C#
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TimeNowScript : MonoBehaviour {
private Text ClockText;
// Use this for initialization
void Start () {
ClockText = GetComponentInChildren<Text>();
}
// Update is called once per frame
void Update () {
ClockText.text = DateTime.Now.ToLongTimeString();
}
}
```
## コードの補足
### 参照の追加
```C#
using System;
using UnityEngine.UI;
```
参照にこの2つを追加した
DateTime関連の参照にSystem、UnityのUI関連にUnityEngine.UIが使われる
### タイマーを表示するテキスト
```C#
private Text ClockText;
```
classの代わりにTextと記述する
### Textコンポーネントを取得
```C#
void Start () {
ClockText = GetComponentInChildren<Text>();
}
```
親子関係にある子オブジェクトからTextコンポーネントを取得する
記述し忘れるとNullReferenceException: Object reference not set to an instance of an objectになる
### 現在時刻を取得
```C#
void Update () {
ClockText.text = DateTime.Now.ToLongTimeString();
}
```
デバイスから現在取得し、テキストにリアルタイム反映させる
ToShortTimeString()の部分は以下に直すことで別の形式で反映させることができる
```C#
// 時、分を取得する(hh:mm (AM/PM))
ClockText.text = DateTime.Now.ToShortTimeString();
// 時、分、秒を取得する(hh:mm:ss (AM/PM))
ClockText.text = DateTime.Now.ToLongTimeString();
// 日付を取得する(MM/dd/yyyy)
- ClockText.text = DateTime.Now.ToShortTimeString();
+ ClockText.text = DateTime.Now.ToShortDateString();
// 日付を取得する(曜日,日付,yyyy)
- ClockText.text = DateTime.Now.ToLongTimeString();
+ ClockText.text = DateTime.Now.ToLongDateString();
```
# アタッチする
書いたスクリプトを、生成したテキストにアタッチして、Playして動作を確認する。
![録画_2018_04_16_01_07_09_482.gif](https://qiita-image-store.s3.amazonaws.com/0/210093/4ebbe6b7-ee3a-8f00-1b8d-b1c788fce783.gif)
# おまけ
上の画像のようにテキストに影をつける場合、
テキストのInspectorビューの下部のAdd Component -> 検索欄にShadowと入力 -> Shadow で
くっきりとした影をつけることができる(位置調整、色、透明度の設定も可能)。