【Unity/C#】現在時刻を年月日-時分秒をそれぞれ取得
目覚ましアプリを作るために、やるしかなかったんだ!
...ってことで、時刻を取得するためにめっちゃ苦戦したので、備忘録をば。
基本は System.DateTime.Now
現在時刻を取得したり、時間を扱う場合 System.DateTime.Now を使います。
using System; public class getTime : MonoBehaviour { private string datetimeStr; void Update () { datetimeStr = System.DateTime.Now.ToString(); Debug.Log(datetimeStr); } }
年月日-時分秒に分解
さらに時間を限定し、それぞれ取得することができるよー。
// 取得する値: 年 datetimeStr = System.DateTime.Now.Year.ToString(); // 取得する値: 月 datetimeStr = System.DateTime.Now.Month.ToString(); // 取得する値: 日 datetimeStr = System.DateTime.Now.Day.ToString(); // 取得する値: 時 datetimeStr = System.DateTime.Now.Hour.ToString(); // 取得する値: 分 datetimeStr = System.DateTime.Now.Minute.ToString(); // 取得する値: 秒 datetimeStr = System.DateTime.Now.Second.ToString(); // 取得する値: コンマミリ秒 datetimeStr = System.DateTime.Now.Millisecond.ToString();
これを見つけるまでにどれだけ時間かけてんだよ...ってくらいですw
しかしながら、この試行錯誤の時間すら楽しくなってきたのでね。
ちなみに、表示はこんな感じ。
private void OnGUI() { GUI.Label(new Rect(90, 150, 100, 50), datetimeStr, style); }
これで現在時刻を表示する部分は出来上がりましたー。
次は、UIを充実させて、見た目をそれっぽくしてみるよ!
【Unity/C#】OnGUI関数でボタンやラベルを表示する
作成したUIオブジェクトの出力はOnGUI関数を使う
基本的に作成したオブジェクトをどうこうするには、OnGUIという関数を使うみたい。
void OnGUI() { // ココに実際の処理を列記 }
関数内に、サイズや位置を調整するGUIコントロールの記述をしますー。
void OnGUI() { // ラベルの出力 GUI.Label(new Rect( X座標, Y座標, width, height ), "任意の出力テキスト"); // ボタンの出力 GUI.Button(new Rect( X座標, Y座標, width, height ), "任意の出力テキスト"); // ボックスの出力 GUI.Box(new Rect( X座標, Y座標, width, height ), "任意の出力テキスト"); // チェックボックスの出力 GUI.Toggle(new Rect( X座標, Y座標, width, height ), "任意の出力テキスト"); }
オーバーロード関数みたいなもんなんで注意!
上記、OnGUIは毎フレーム描画されているオーバーロード関数。
ソレを知らなかったボクは、つい繰り返し処理なんか入れちゃったもんで、
MacちゃんのCPUがMAX100%になっちゃいました...w
まぁなんとかなったのですがね。ちなみに作りたかったのはこちら。
void OnGUI() { for(int togglePosY = 25; togglePosY <= 100; togglePosY += 25) { toggleBool = GUI.Toggle (new Rect (25, togglePosY, 100, 30), toggleBool, "Toggle"); } }
動的に個数を出力したかっただけなんですが、いろいろ意味の違う文献なんかあさっちゃって...
結構時間かかっちゃったな...。
【Unity】「yield」とコローチンという仕組み
衝撃の"処理中断"という仕組み
C#でまたまた遊んでいたときに"処理を中断し、やることやったら元の処理に戻る"という文献を見つけまして。
PHPやMySQL、Webサイトの言語などを扱っていましたが、そんなことができるってなると、だいぶワクワクしていました。
備忘録も兼ねて、記述方法などをば。
「yield return」という書き方
void Start() { StartCoroutine("AAA"); // 実装の際、StartCoroutineメソッドが便利。 } IEnumerator AAA() { yield return new WaitForSeconds(3); // 3秒間、処理を中断し停止します。 yield return new WaitForSeconds(2); // 2秒間、処理を中断し停止します。 yield return new WaitForSeconds(1); // 1秒間、処理を中断し停止します。 }
例えば「3秒間待って1処理、これを繰り返す」みたいな処理をつくる場合に活かせるのかも。
ちなみにボクの場合、『カウントする処理』に使用しました。
void Start() { StartCoroutine("Coroutine"); } IEnumerator Coroutine() { countDown = 3; yield return new WaitForSeconds(1); countDown = 2; yield return new WaitForSeconds(1); countDown = 1; yield return new WaitForSeconds(1); countDown = 0; status = "GAME_START"; }
こんな感じ。
何かと使えそうだから覚えておきます。
【PHP】CodeIgniterのActiveRecordクラス「get_where」で取得した値の取り出し方
簡単で導入しやすいライブラリ「CodeIgniter」
今まで「Perl」とか「CakePHP」とかにお世話になっていたけれど、最近はCodeIgniterで満足しています。
導入も削除も簡単で、しかも日本語ライブラリがすごく充実している。
参考までにこちらから、ご確認くださいね。
少し前、CodeIgniterを使っていたときに迷ってしまったのが、
ActiveRecordクラスを使ったときの値の取り出し方。
// 駄目だったやつ
$query = $this->db->get('tableName');
var_dump($query);
こんな感じにやっても、お望みの値が取得できなかった...
そんな若かりし頃、これもまた1時間ほどかけようやく解決したことを今でも思い出せますね...
解決方法は「result()」
$query = $this->db->get('tableName')->result();
実は、get()の先に「result()」をつけることで、オブジェクトとして値を取り出せることが判明。
また、配列が良い!ってヒトには『array』とつけるだけで、配列形式で取得も可能。なんと便利で簡単だった!
// 配列化する場合は"array"を入れる。(何もなければオブジェクト) $query = $this->db->get('tableName')->result("array");
これ知ってからは、もうDBを扱うことも簡単でした。
やっぱり値が取得できたときの快感は昔もいまも変わらないですね!
【PHP】implode()、explode()、文字列を配列化するのはどっち?
配列化⇔文字列化(explode/implode)
いつも手を止めてしまうポイントが、implode関数とexplode関数。
「どっちだっけかなあ…(ググる)」が、いつの間にか、とんでもないタイムロスになっていました…そろそろ覚えます。
implode関数
配列の値を一つの文字列型に変換/格納する。配列の要素と要素の間に、指定した区切り文字を挟む。
(区切り文字指定を""にした場合には、区切らず要素の値をそのまま結合)
implode("区切り文字", "文字列化する配列");
$productCsvData = array("AAA", "BBB", "CCC"); $string = implode(",", "$productCsvData"); /** * $stringの中身は「"AAA,BBB,CCC"」となる */
explode関数
一つの文字列型の値を配列型に変換し、要素に格納する。要素に格納するとき区切り文字を検出し、格納要素をふり分ける。
(区切り文字指定が""の場合には、区切らず一つの要素に打ち込む)
explode("区切り文字", "配列のためのインデックス");
$memberData = "AA-BB-CC"; $array = explode("-", "memberData"); /** * $arrayの中身は「array("AA", "BB", "CC")」となる */
ちなみに
- explode = 「爆発する」
- implode = 「崩壊する」
という意味なのだが...なんとなくイメージに結びつかなかったので、あくまでも参考まで。