特定の日付までのカウントダウンを作る

とあるイベントまでのカウントダウンタイマーの例です.

C#ですとこんな書き方があります.

using UnityEngine;
using System.Collections;
using System;//.netフレームワークを使います一行上のものと一緒?
using UnityEngine.UI;   // UIを使います.UI使用時は必須

public class countTime : MonoBehaviour {
	System.DateTime mynow;//日付形式の入れ物作成(以下2つも)
	System.DateTime date2;
	System.DateTime date1 = new DateTime(2015, 4, 2, 18, 30, 0, DateTimeKind.Local);//カウントダウン終了時刻を時刻形式で設定
	string myString;//日付表示のための文字の入れ物
	string myString2;//ん?これ未使用?
	bool countdSW = false;//これも未使用?

	public Text countDownTime;//unity UIのTextコンポーネントをプロパティ画面でアサインできるように準備
	void Start () {

		// 現在時刻の取得
	mynow = DateTime.Now;//これ無意味ですが,気持ちの問題です

	
	
	}
	
	// Update is called once per frame
	void Update () {

			
						mynow = DateTime.Now;//最新時刻を取得
		if (mynow < date1) {//日付の入れ物同士は比較演算子が使えますので,カウントダウン終了時刻と現時間を比較

						TimeSpan span = date1 - mynow;//Timespanという時間の長さを入れる専用の入れ物を作ってspanに入れる.これ.NETらしい

						myString = string.Format ("{0:00}h{1:00}:{2:00}:{3:00}", span.Days, span.Hours, span.Minutes, span.Seconds); //これも未使用?
						countDownTime.text = string.Format ("{0:00}d{1:00}h{2:00}m{3:00}s", span.Days, span.Hours, span.Minutes, span.Seconds);//残時間spanから各時間要素を取り出す {0:00}はその表示形式の設定ルール

				} else {
						countDownTime.text = "00d00h00m00s";//カウントダウンを越えたら0を入れる.ここに別のテキストを入れてもいいかも
				}
		}



}

ポイントは

1.日付形式 System.DateTime で変数作成

2.時間の長さを入れる TimeSpan で変数作成

3.日付形式の変数同士で > や <が使える

4.stringのフォーマット形式{0:00}{1:00}など

です

音その2

スマホはヘッドホンで聴いて遊ぶことが多いですよね.

ところがセリフが始まる前後に「シャー」という音が入るアプリもたまにみかけます.アンビエント(環境)ノイズと呼んだりします.

このノイズを消さないと,いかにもこれからしゃべりますって感じで印象悪いですね.

かなり高い機材でもこのノイズは出るものです.

音響のソフトにはこれを消す機能があります.

しゃべっていないときの音の特性を使って,ノイズを消すという手法です.

その方法(SoundTrackProの例)

  1. 収録した音声クリップのノイズのみ部分を選択します.
  2. そしてアンビエントノイズに設定をします
  3. ノイズプリントに設定を選択
  4. 波形全部を選択
  5. ノイズを低減を選択

soundtrack

ノイズの低減度合いがプレビューされますので具合をみて「適用」をクリック

TOOL

これで,ヘッドホンできいてても違和感ない声素材ができました.

さらにピッチシフタを使えば,音程を変えられるので声バレを防げます.ZIPFMのロボ丸みたいな声になっちゃいますが,,

フィードバックを減らす

カラオケやイベントなどでフィードバック(ハウリング)に悩む場合があります.

その1つの対策です.

まず,ひとつの原因ですが,ある特定の周波数(音程とおもって差し支えありません)をよく拾うマイクや,特定の周波数を出すスピーカーがあったりします.(今回はマイクに限って書きます)

feedback2

(黒い線で描いた絵はマイクのつもりです)

で,その音をマイクで拾ったとき(赤い線)

feedback

1周目 アンプ(音をおおきくする機械)で音が増幅されて出てきます

2周目 増幅された音を拾ってそれをさらに大きくして出します

4周目 さらに増幅して音を出します

以下無限ループで爆音になります

これを防ぐには,

(1)スピーカーとマイクを遠ざける

音は遅く伝わりるんで。そして、

(2)特定の周波数をカットする

どうしてもその音をひろいやすいマイクは,それが原因でフィードバックします.そこで,出す音のうちマイクにひろいやすい音をカットします.

つまり

800Hzに反応しやすいマイクの場合,スピーカーから800Hzの音が出にくいようにして無限ループさせないようにします.

これはPA(Public Address)機器を持ち込んだ場合に事前にチェックしなくてはなりません.そこでPA担当者は,シーっとか,ハッハッとか,マイクチェック!とか言っていろんな周波数の音を出してハウリングしないかチェックしいます.

ちなみにこの作業は会場毎におこないます.

というのも会場ごとに反響特性が違うからですね.マイクでひろいやすい音が会場によっては吸収され,会場によっては反響して回り込んでくるかもしれないからです.

なので「マイクチェック」としつこく,歩きながら言っているのはいろいろな周波数といろいろな場所(反響)でまんべんなくチェックしてるからで,かっこつけているわけではありません.

お客さんに不快な思いをさせないようにする,重要な作業です.

PlayMarketでの公開について

Google Play Marketへの公開って.apkは50MB制限だそうです.

で,SpilAplication Binary というオプションで50MB以下におさえられるみんな言ってるけど,おさえられない.

どうも,分割されないものもあるらしい.

なのでこれやっても100MB 越え,,,

基本的に読み込んだアセットなどのうち,未使用のものはアプリに入らないらしいが,

ということで,試しに未使用の日本語フォントを削ってみたらあっさり減りました.

ということで,日本語フォントは(再配布可能なフォントですよもちろん)あまり種類使えない,,,

1書体15MBとすると,1つかふたつが限界かと,,

どうしても多種のフォントを使用したい場合,静的な文字は画像でいれるのが良いかも.

となるとキレイに出力するためには,AdobeIllustrator,Photoshopがやはり重要になってきますね,,

iTweenのonCompleteがおかしい

iTweenの処理後の操作でoncompleteを使うけど,指定した関数に飛ばない.

DebugLogを見ると飛んでいるようだけど,やってくれない.

うまくいかなかった例

iTween.FadeTo(obj, iTween.Hash("alpha", 0, "time", 0.4f,"oncomplete","boolReset","oncompletetarget", obj));

function boolReset(){
//bool reset
}

 

iTween.FadeTo(obj, iTween.Hash("alpha", 0, "time", 0.4f,"oncomplete","boolReset"));

function boolReset(){
//boolreset
}

 

うまくいった例

iTween.FadeTo(obj, iTween.Hash("alpha", 0, "time", 0.4f,"oncomplete","boolReset","oncompletetarget", gameObject));

ほげぇ,,,

後から追加したUVがFBXに出されない

FBXでUnityに書き出すのに,オリジナルのUVマップを後から追加し,そこにテクスチャあてているのですが,Unity上では,デフォのUVで貼られる(テクスチャは手動で割り当てるので関係ない)

UVセットのmap1をなんとか削除して(名前を変えたりして),モデルの上で右クリ>UVセット>使いたいUVセットあてる

これでFBX出力

UVさえあってれば手書きのテクスチャが貼れるはず

Unity講座2のスクリプト

内容はのちほど,スクリプトのみアップします

#pragma strict
var prefab : Transform;
function Start () {

for (var i : int = 0;i < 5; i++) {
Instantiate (prefab, Vector3(0, i+0.5, 0), Quaternion.identity);
}

}


function Update () {

}

JSです