devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

コルーチンを使ったサンプル。

毎フレーム実行したい場合はUpdate()メソッド内に記述すれば良いが、フレームレートとは別の周期で何かを実行したい場合には、コルーチンの仕組みを使うと容易に実現できる。

サンプルの内容

unity-coroutine

画面にはStartとStopの2つのボタン。
Startをクリックすると、シーンに0.5秒ごとに立方体を追加し続ける(コルーチンが動き出す)。
Stopをクリックすると、立方体の追加が停止する(コルーチンが停止する)。
シーンに追加された立方体は、5〜10秒後に消える。
カメラが原点を中心にY軸周りに回転する。

続きを読む

GUITextureをフェードアウトしたくて、コルーチンとかを調べてましたが、UnityにはiTweenという強い味方があることを思い出しました。

iTweenを使うと、位置やスケールなどを始め、様々なパラメータを簡単にアニメーションすることができます。
例えば、オブジェクトがパッと消えてしまうよりも、若干時間をかけて徐々に消えたほうが玄人っぽく見えませんか?

iTweenはUnityのAssetStoreから無料でダウンロード出来ます。
ドキュメント類はiTweenのサイトに掲載されています。

iTween :

http://itween.pixelplacement.com/index.php

続きを読む

指定した領域内でタップ操作を監視するサンプル。
Unity Remoteでストレスなく動作確認ができるようにするため、Touch.Phaseは使っていません。

先日のdelegateの仕組みを使い、タップ操作が行われた際に実行する関数を定義し指定することが出来る。
タップ時のイベントリスナーを登録するような感じ。

タップ操作の定義:

・指定した領域内で指が触れて、指定した領域内で指が離された時のみタップ操作が行われたこととする。
・領域外で指が離された場合はタップ操作とみなさない。
・複数の指が触れた場合は、最初に触れた指(fingerIdがゼロ)が監視の対象となる。

続きを読む

試しにdelegateを使ってみたサンプル。

続きを読む

ユニバーサル対応のアプリの場合、デバイス(iPhone, iPad, Retina, …)を判定して、それぞれに応じた処理が必要になる(例えば、レイアウト。ボタンや画像の位置やサイズなど)。

画面サイズからデバイスを判定するサンプルコード(抜粋)。

Unity上で実行しているときは、Gameウィンドウのサイズが画面サイズ(Screen.width, Screen.height)となるので注意が必要。

続きを読む

スクリプトでオブジェクトを生成するにはInstantiate()関数を使用します。
生成するオブジェクトをプレハブとしておくことで、スクリプトも含めた状態でシーンへ追加することができます。

サンプルプロジェクトの内容:

・画面にはオブジェクトを生成するためのGenerateボタンが表示されている。
・Generateボタンをクリックすると、ランダムな位置にCubeが追加される。
・Cubeをクリックすると、クリックされたCubeがシーンから削除される。

続きを読む

タッチデバイス向けの、GUI Textureでボタンを実装するテストコード。

前提条件:

複数ボタンの同時押しは考慮しない。マルチタップ時には最初のタップを処理の対象とする。
「ボタンがタップされた」は、「ボタンの上でタップが開始」されて、「ボタンの上でタップが終了」した時とする。

コードの構成と内容:

GUI Textureに追加するコード(GUIButton.cs)と全体を制御するコード(Scene.cs)の2つ。
ボタン自体の状態(画像の入れ替え、状態の遷移など)はGUIButton.csが担当する。
ボタンが押された際の振る舞いは、Scene.csが担当する。Start()で自分自身とタップされた時(OnTap)のメッセージ(メソッド名)をボタンへ設定しておく。
ボタンの状態は、プロパティbuttonStatusで取得することが出来る。

ボタンは以下の4つの状態を持つ

  • UP – 何もされていない状態
  • DOWN – 押されている状態(ボタンがタップされた)
  • CANCEL – キャンセルされた状態(ボタンの外でタップがタップが終了した)
  • END – 押下終了(ボタンの上でタップが終了した)

続きを読む

アプリ内からウェブページを開くには、Application.OpenURL()関数を使用する。

続きを読む