2012年4月30日月曜日

iPhone: マップアプリのUIについて考えたこと

長い間の謎がひとつ解けました。
やっぱり、iPhoneのマップアプリには地図を回転させる機能がついていた!(笑)

ごくまれに、「地図が自分の向いている方向に同調して回転する」モードになって、何これ便利!とか思ってましたが、どうやってやればいいのか分からず、どうしてそうなったのかも分からない。
特に緊急性もなかったので、そのまま放置していました。

2012年4月28日土曜日

Unity: スクリプティングC#初歩 - Generics

GameObjectが保持している特定のコンポーネントにC#スクリプトからアクセスする書式をまとめてみました。

例として、myScriptというコンポーネントをGameObjectにアタッチしている場合を想定します。

JavaScriptでは以下のような感じ。
var aScript : myScript = GetComponent(myScript);
aScript.someData = 1;

2012年4月26日木曜日

Unity: メモリ不足に陥ったらResourcesクラスのアンロードを試してみる

Resources.Load()で読み込んだデータは、そのデータを使用していたオブジェクトが削除されても、再利用する時のためにキャッシュに残る仕組みになっているようです。

PCなどの比較的メモリが多いマシンで実行する時には問題が起こりにくいですが、スマートフォンなどのデバイス上だとメモリが足りなくなり、問題が起こるケースもあるようです。

Unity: Resourcesフォルダが複数ある時の読み込みテスト

UnityではResourcesフォルダ内にデータを入れておくと、スクリプトからデータの読み出しが
Resources.Load("dataname");
で行う事ができます。

リファレンスには、Resourcesフォルダは複数持つ事ができると書いてあります。
試しに以下のようなフォルダ構成にして、データを読み込むテストをしてみました。

それぞれのResourcesフォルダ内にあるBlockPrefab2とBlockPrefab3をインスタンス化するコード(C#)は以下のようになります。

Unity: ResourcesフォルダからPrefabを読む

先日の記事「Unity: Prefabをスクリプトからインスタンス化する」に対して、@rin_himawariさんからResourcesフォルダの中にPrefabを入れておけばスクリプトから簡単に呼び出せるよ、とツイートで教えて頂いたので、その辺りのことを調べてみました。

Unity: Prefabをスクリプトからインスタンス化する では、public宣言したBeePrefabに、InspectorからPrefabを指定する必要がありましたが、その必要がなくなります。
まずResourcesフォルダを作成して、以下のような構成でPrefabデータを格納しました。
/Resources/Prefabs/Bee
スクリプトは以下のように変わります。

2012年4月25日水曜日

Unity: Prefabをスクリプトからインスタンス化する

スクリプトからGameObjectを動的に生成するには、UnityではPrefabというAssetを準備して、そのPrefabをInstantiate関数を使ってインスタンス化するのが一般的なようです。
ゲームを作るなら、この辺りの仕組みを最初に覚えてしまった方がいいでしょう。

リファレンスマニュアルにはJavascriptのサンプルコードが付いていますが、残念ながらC#版は見られませんでした。
この記事の後半に僕が作成したC#のサンプルコードを掲載しておきます。

2012年4月24日火曜日

Unity: iOS上でGUILayout.Labelのフォントサイズを大きくしたい

フレームレートを表示する目的で GUILayout.Label を使用しています。
いつもお世話になっている以下のサイトを参考に、スクリプトをC#で書きなおしてみました。

強火で進め - [Unity][Unity3d]FPSの値を変更する方法
using UnityEngine;
using System.Collections;

public class Startup : MonoBehaviour {
  int count = 0;
  float t = 0;
  string fpsInfo = "";
  public GUIStyle fpsStyle;
 
  // Use this for initialization
  void Start () {
  }
 
  // Update is called once per frame
  void Update () {
    t += Time.deltaTime;
    ++count;
    if (t>=1.0) {
      fpsInfo = "fps: "+count;
      t = 0;
      count = 0;
    }
  }
 
  void OnGUI() {
    GUILayout.Label(fpsInfo,fpsStyle);
  }
}
※ネット上にある Unity のサンプルスクリプトが Javascript で書かれてることが多いので、C# で書こうとすると、初心者には途方に暮れてしまうことがありますが、関数名はそのままでコンバートすれば、だいたい大丈夫なようです。

2012年4月23日月曜日

Unity: Scriptフォルダーの注意点

仕事でUnityを使う機会が増えそうなので、最近少しずつ勉強してます。

Unityで扱うスクリプトを格納するフォルダにはいくつか制約があり、どこにでも入れていいのだろうと思っていると引っかかります。
以下、英語マニュアルから抜粋してみました。
未検証の部分もあり、間違ったところがありましたら教えて頂けると助かります。

2012年4月20日金曜日

はっぱの絵たち

はっぱ、はっぱ HDで描いた絵です。

うさぎおにぎり陽気なイタリア男くまお花Baa!
Tシャツネココップ青い鳥iMacSnowman
富士山花に群がる蜂

Leaves Paint, a set on Flickr.

2012年4月14日土曜日

iOS: UITableViewを使って横スクロール型画像ビュアーの実装

UITableView を横スクロールさせる画像ビュアーを作ってみましょう。
UITableView の横スクロール方法は多くの方が語られておりますが、今回はちょっとした Tips も含めて書いてみました。

UITableView は基本的に縦スクロールしか機能がないので、その View を90度回転させてやることで横スクロールを実現させます。
その際、UITableView を直接90度回転させるのではなく、UIView の上に UITableView を載せ、その UIView を回転させるのがコツです。
そうしないと UITableView のタッチ検出がうまくいかない時があるそうです。

以下のサイトを参考にしました。
UITableViewを回転して横スクロールする際のタッチのエラーと対策方法 | Zero4Racer PRO Developer's Blog

なお今回のサンプルプロジェクトは ARC を使って実装してみました。

2012年4月13日金曜日

ArtPig: cocos2dエクスポート可能! タイムラインベースのオーサリングツール

cocos2d でゲーム開発をしていて、キャラデモを作成したいとなると、どうしてもタイムラインベースのオーサリングツールが欲しくなります。
いわゆる Flash CS のようなツールが cocos2d 用に欲しいと思い、自分で作ろうかなと思っていた矢先、ArtPig というエディターの存在を知りました。
Mac App Store から購入できますが、Lion でないと購入できませんでした。
まだ Snow Leopard を使っている僕としては、はやく Lion にアップデートしなければという焦りが徐々に高まってきました。(今開発中のアプリをリリースすれば!)

しかし、ArtPig のサポートサイトと覗くと無料の Lite 版がダウンロードできるようになっています。
それを落としてみると、Snow Leopard でも問題なく起動させることができました。単にサポートが Lion のみという事なのでしょうか。

英語ですがチュートリアルのビデオが用意されており、サンプルデータも提供され、cocos2d 側の組み込みライブラリも準備されて、なかなか良さそうです。
しかし、少し使っていると、疑問が湧いてきました。

2012年4月11日水曜日

coco2d: 1.0.1から1.1 beta2への入れ替え方法

cocos2d 1.1 beta2 の CCLabelBMFont が Unicode 対応になった事だし、そろそろ 1.0.1の既存プロジェクトを 1.1 beta2 で動くかテストしてみたいと思う方も多いでしょう。

cocos2d のインストールとは、つまり Xcode へ cocos2d 用のテンプレートをインストールするということです。
残念ながら、複数バージョンの cocos2d のテンプレートを Xcode にインストールする方法は示されておりません。
これができると安心なんですけど、そうもいかないので、テンプレートを上書きインストールして、問題があったら 1.0.1 をインストールし直すのがいいようです。

今回は、既存プロジェクトを 1.1 beta2 に入れ替える方法を解説します。

2012年4月9日月曜日

iOS: LeaderboardのScore Format Type

iOS の GameKit.framework で、Leadeboard へスコアを送信する時には int64_t (long long)型を使用します。
この型は、Leaderboard の Score Format Type に Elapsed Time タイプを選んでようが、Fixed Point タイプを選んでいようが同じです。

例えば Elapsed Time - To the Second タイプを選んでいる場合、123456 を送信すると、12:34:56 と表示されます。12時間34分56秒という意味です。
しかし、Elapsed Time - To the hundredth of a Second タイプを選んでいる場合、先の値だと 00:12:34.56 と表示されます。0時間12分34秒56という意味です。

また、int64_t 型を NSUserDefault に保存しようとすると、ダイレクトに保存するメソッドが無いので、一旦、NSNumber 型に変換してやらないとなりません。

Unity: RageSplineが面白そう

2DベクターグラフィックライブラリRageSplineが、Unity Asset Storeで4/8まで$25のセール中でした。

僕はもともとFlash好きな人間なので、ベクターグラフィックでゲームやアプリを作ったりしていました。
最近の iPhone アプリ開発ではビットマップデータを使用する事が多かったので、こういうライブラリが Unity で出てきてくれると、何か作りたくなってしようがないです。


問題は、iPhone上での実行速度なのですが、こちらの方は今のところ情報を得られていないです。
とりあえず、セール中にゲットできたので、時間のあいまに触ってみようと思います。

関連のある記事

2012年4月8日日曜日

60日間無料でPhotoshop CS6パブリックベータ体験

Photoshop CS6 パブリックベータが公開されています。
無料で60日間、もしくは5月31日までフル機能を試用できるので、Photoshopを持っていない人も、または古いバージョンを使用している人も、この機会に最新のPhotoshopを試してみるチャンスです。
今まで試用期間というと30日が一般的でしたが、今回60日もあるというのは嬉しいですね。

Adobe Photoshop CS6 パブリックベータ提供開始

上記サイトから「Photohop CS6 パブリックベータ版ダウンロード」というボタンをクリックすると、ダウンロードページへ移行します。
そこで、Mac版かWindows版を選んで下さい。

2012年4月7日土曜日

cocos2d: CCLabelBMFontのUnicode対応

cocod2d 1.1 beta2 では、CCLabelBMFont が Unicode をサポートしてくれました。

Change Log: version 1.1 beta2 - 12-Mar-2012に、以下のように書かれています。
  • [FIX] CCLabelBMFont: full unicode support

以前から、GlyphDesignerで日本語文字はエディットできました。
しかし 1.1以前の cocos2d で表示しようとすると、実行時にクラッシュしてしまいます。

本当にサポートされたのか、1.1 beta2 を使って、自分の現行プロジェクトで試してみました。

2012年4月6日金曜日

cocos2d 1.1からのグラフィックサフィックス設定方法

coco2d 1.1 beta2 を導入しました。

1.1以前は Retina ディスプレイ用のグラフィックファイルのサフィックス名は、ccConfig.h 内の CC_RETINA_DISPLAY_FILENAME_SUFFIX で定義していました。
しかし、1.1以降では CCFileUtils クラスの setiPhoneRetinaDisplaySuffix メソッドで設定するように変更されています。

デフォルトでは -hd がサフィックスとして定義されているので、これを @2x に変えてやるには、
[CCFileUtils setiPhoneRetinaDisplaySuffix:@"@2x"];
と設定します。

Google Analyticsのクエリパラメータ除外

Google Analytics を活用していますか?
なかなか奥が深くて、まだまだ知らない&分からないことが多いです。
毎日、少しずつ習得しているといった感じです。

先日、サイトを解析していた時、URL にクエリパラメータがついていると、対象となるページは同じなのにクエリパラメータが違うために別のページと解析されてしまう事に気づきました。
その結果、ページ解析リストがずら〜〜〜〜〜と長くなってしまいました。

例にすると、こんな感じです。

/site/content.html?id=1&data=UG234012
/site/content.html?id=8&data=UG163504
/site/content.html?id=4&data=UG990601
/site/content.html?id=7&data=UG777562
/site/content.html?id=9&data=UG304478

2012年4月4日水曜日

iPhoneのメッセージの吹き出しが突然青から緑になったら


iPhoneのメッセージが便利すぎて、最近、iPhone同士の相手とはメールをほとんど使わなくなりました。

ところでメッセージの吹き出しの色、どういう意味があるかご存知でしたか?
iPhone のメッセージアプリ、じつは3つの通信方式でメッセージの送受信を行なっています。
  • SMS -- 電話番号で通信。キャリアが違ってもOK
  • MMS --メールアドレスを使って通信。キャリアが違ってもOK
  • iMessage -- iOS5のデバイス同士で通信

大雑把に言うと、上記のような感じになります。
下に行くほどリッチになると思っていいでしょう。(笑)

Related Posts Plugin for WordPress, Blogger...