2014年10月8日水曜日

色彩感覚テストアプリ

カラー診断画像

色彩感覚テストアプリをリリースしました。

Unityアプリのリリース手順の確認用に作成した簡単なアプリです。
サンプルイメージ色弱テスト

色のついたパネルを並べてグラデーションを作り、
色彩感覚をチェックします。
この手のゲームはいくつかありますが、使用する色の選択や量がいまいちで、
とてもやる気になれませんでした。(忍耐力テストみたい)
そこで、このアプリは素早く色彩感覚をテストできるようにしました。
色彩感覚が弱い方で無ければ1000点取れます。

Unityでの作成について。
GUIの作成が不便です。Unity4.6のリリースが待ち遠しい。
便利な点。アプリ画像は一つ作れば大小は自動で作成してくれます。
UnityでビルドするとJavaで書く40倍の容量に。。最低20M消費?
とりあえず統合開発環境代わりに使えます。

本格的なゲームも設計中です。

2014年10月6日月曜日

Unityのフレームレートとタッチイベント

スクリプトからフレームレートを指定する場合は
Application.targetFrameRate = 10//一秒間に10回描画
と書きます。

プログラムの処理が重い場合にフレームレートを安定させるため、
フレームレートをあらかじめ下げることがあります。
注意点としては、フレームレートと各種イベント(タッチイベントなど)が同じ間隔になってしまうことです。

描画は遅くしたいが、タッチイベントは最速で処理したいときなどは、描画用のスクリプトに制御が必要になります。

初回ビルド時に以下のエラーが発生しました。

Error building Player: UnityException: Bundle Identifier has not been set up correctly
Please set the Bundle Identifier in the Player Settings. The value must follow the convention 'com.YourCompanyName.YourProductName' and can contain alphanumeric characters and underscore.
Each segment must not start with a numeric character or underscore.

バンドル識別子を設定してください。値は 'com.YourCompanyName.YourProductName'規則に従う必要がありますし、英数字とアンダースコアすることができます。
各セグメントは、数字、文字またはアンダースコアで始めることはできません。

解決方法

画面左上のFileを選択してプルダウンリストのBuild Settingを押すと表示されるウインドウのPleyre SettingボタンインスペクタのOther Setteingの項目Bunble Identyfierを入力する。社名とプロダクト名も入力わすれに注意。

例:com.test.test



Unityビルドエラー Error building Player: Win32Exception: ApplicationName zipalign.exe

UnityでBuild & Runを実行したら以下のエラーが表示されました。

Error building Player: Win32Exception: ApplicationName='C:/Android/adt-bundle-windows-x86-2014X/sdk\tools\zipalign.exe', CommandLine='4 "C:\X\X\Temp/StagingArea/Package_unaligned.apk" "C:\X\X\Temp/StagingArea/Package.apk"', CurrentDirectory='Temp/StagingArea'

zipalign.exeが見つからないそうです。

解決方法

SDK/build tools/zipalign.exeを
SDK/toolsへコピーすればよい。

2014年10月4日土曜日

スマホのおすすめのモバイルバッテリー

 予備のバッテリーを用意するよりもモバイルバッテリーがお勧めです。
あいほん
お勧め2014年夏の新製品。
スマホなら5回ほど充電可能。
端末を自動で判断し、最速の電力を供給。
安全対策も完璧。
18ヶ月保障。
LEDライトにもなる

2014年10月1日水曜日

Unityシングルトン。スクリプトやシーン間でのデータ共有

シングルトンで必要な機能。
一つの実体でいつでもどこからでもデータを保持受け渡しできること。
Unityのシングルトンにはいろいろと制約があるのでC#はJAVAに慣れている人でもリファレンスを見る必要があるかも。

以下のC#スクリプトを作成する。
Tukau1 シングルトンデータを使うクラス。どこに実装してもいい。
DataKanri 空のゲームオブジェクトに実装する。(ドラッグドロップ)
Kyouyuu 共有データ置き場。とりあえず変数mojiを共有。


データを実際に使用する場合
using UnityEngine;
using System.Collections;

public class Tukau1: MonoBehaviour {

void Start () {
DataKanri dk = DataKanri.Instance;
Debug.LogWarning (dk.moji");
                dk.moji="Tukau1"; 
       Debug.LogWarning (dk.moji");
}
}

データをゲームオブジェクトに関連付けて保持する
using UnityEngine;
using System.Collections;

public class DataKanri: Kyouyuu<DataKanri> {

void Awake(){
DontDestroyOnLoad (this);//シーン移動でゲームオブジェクトを破棄しない
}

// Use this for initialization

void Start () {

}

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

}

}

実際にデータを置く場所。
using UnityEngine;
using System.Collections;

public class Kyouyuu<T> : MonoBehaviour where T : Kyouyuu<T>
{
public string moji ="Kyouyuu";//必要なだけ変数を作ってOK。内部クラスを作っても良い

protected static T instance;
public static T Instance {
get {
if (instance == null) {
instance = (T)FindObjectOfType (typeof(T));

if (instance == null) {
Debug.LogWarning (typeof(T) + "インスタンス無いよ");
}
}

return instance;
}
}

protected bool CheckInstance()
{
if( instance == null)
{
instance = (T)this;
return true;
}else if( Instance == this )
{
return true;
}

Destroy(this);
return false;
}

protected void Awake()
{
CheckInstance();
}

}


適当なソースから使いやすそうなものをチョイスしました。
他にもシングルトンの書き方があるそうです。

Unity内部クラスの多次元配列C#

UnityのC#に慣れていないため配列の宣言と初期化がわかりませんでした。

多次元配列の指定は大かっこ内にカンマです。
INT[][] → INT[,]
クラスの配列は一つずつインスタンスを作成しなければいけません。
System.Serializableを宣言することでインスペクタを使うことができます。

//内部クラスでデータ管理
[System.Serializable]
public class Data : Object{
public string namae="";
public float x=0f;
public float z=0f;
}
public Data[,] data = new Data[7,6];

//初期化

for(int i= 0;i<7;i++){
for(int j = 0;j<6;j++){
data[i,j] = new Data();//初期化
}
}
//値を入れる
data[z,i-1].namae= "a"+j+i;
data[z,i-1].x = cube1.gameObject.transform.position.x;
data[z,i-1].z = cube1.gameObject.transform.position.z;