UnityでNCMBのデータストアからcreateDateを取得する方法 [Unity開発]
大学で卒業制作を指導していて、留学生君が製作中の案件で上手く行かない相談に来ました。簡単だろうと思って、ささっと済まそうとすると、アレレ?なぜだろう。やはり上手く行かない。持ち帰って調べて解決しました。
まず案件は、NiftyCloudMobileBackend(ニフティクラウドモバイルバックエンド)に置いたデータストア(レコードが入ったテーブルですね。)から単純に全件データをコンソールに表示するというもの。
以前にハイスコア管理を行なったアプリも作って運用している経験もあったので、コレ知ってる!と思ってやってみると、データの型がエラーを起こしているような反応が出ました。
不具合のソースコードは以下の通り。
using System.Collections; using System.Collections.Generic; using UnityEngine; using NCMB; public class DataFetchAction : MonoBehaviour { void Start () { NCMBQueryquery = new NCMBQuery ("Attend"); query.FindAsync((List fetchData, NCMBException err) => { if (err != null) { Debug.Log("Error:" + err); } else { foreach (NCMBObject stored in fetchData) { string p = System.Convert.ToString(stored["Person"]); int r = System.Convert.ToInt32(stored["Room"]); string c = System.Convert.ToString(stored["createDate"]); Debug.Log(p + " : " + r + "-room : " + c ); } } }); } }
文字列型と整数型は無事に格納したのに、日付でコケていることが判明。
調べると、日付「CreateDate」はユーザーが定義したデータフィールドではないので、ちょっと特殊な日付型。取得の方法が違うことがわかりました。なので、以下のように修正。
foreach (NCMBObject stored in fetchData) { string p = System.Convert.ToString(stored["Person"]); int r = System.Convert.ToInt32(stored["Room"]); string c = System.Convert.ToString(stored.CreateDate); Debug.Log(p + " : " + r + "-room : " + c ); }
はい、上手く行きました。
留学生の彼にも大学のサーバーを通じて教えてあげました。超・真夜中だったけど。
別ファイルの情報をiFrameにするとiPadでは表示不能!どう回避する? [WEB制作]
どう、回避する?
ネット上の情報ではiPadを検出して、専用のCSSを割り当てるアイデアが豊富に見つかるものの、半信半疑で試していくこととした。
iframeをdivで囲ってCSSでかなり工夫するアイデアが示されているので、それらを順に試すものの、あまり格好が良くない。その順を逆に囲ってみたりしたけど、それもNG。
回避策であって解決策ではなさそう。
別ファイルに記述した掲載文字情報、という位置関係を維持するだけであれば、このような解決策はどうか?と思って構築すると、うまくいった。
★★★ HTML側 ★★★
★★★ Javascript側 ★★★ ファイル名を「hoge.js」として保存
// JavaScript Document
document.write("
- ");
document.write("
- 2014.1.29
- "); document.write("
- 大浴場休館日のご案内。2014年3月1日(土)~ 2014年3月21日(金)は、『大浴場の改修工事』のため休館させていただきます。
3月22日(土)より通常営業営業いたします。- "); document.write("
- 2013.12.13
- "); document.write("
- 全館休館日のご案内。来たる12月27日(金)~12月30日(月)は、『館内メンテナンス』のため全館休館させていただきます。
12月31日(火)より通常営業いたします。- "); document.write("
Mayaやmaxのfbxファイル迷路をUnityで扱う [iPhone SDK]
Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~
- 作者: 高橋 啓治郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/10/01
- メディア: 大型本
この本の中で扱っている迷路ではなくて、Mayaやmaxで迷路を自作して入れ替えてみたくなったので早速実行に移す。
まずは、変換の流れやノウハウを蓄積するために、ほとんど同じものを作って入れ替えることに。
どんなCGソフトでもUnityへの流しこみはfbxファイルだから、どのCGソフトが最適か?はあまり関係がない。各人が息をするように作れるのであれば、マイナーなCinema4Dやmodo、Lightwave、Shadeでも何でもいいと思う。
汎用フォーマットであるDXFや3dsなど何らかの手段でとにかくfbxファイルに辿り着くことが大事。
ポリゴンが裏返ったり、Y-upが狂ったりもあると思うけど、様々な3DCGソフトを駆使して目指すことです。
もちろんfbxの書き出しに長けているMayaかmaxが最適と思うけど。あ、XSIもいいですね。
fbxに書き出す時は、不要なものがパッケージされないように、ポリゴンオブジェクトだけにして、カメラやライトは設定しない方がいいですね。
Unityに取り込まれた時にfbxのデータ構造のままになるので、モデリングした時の回転軸などの座標を残しておきたい場合は便利なので、そういった使い方なら別だけど。
しかもUnityへの読み込みって、先にUnity側でプロジェクトを準備した状態にしておき、書き出したfbxファイルをプロジェクトフォルダ内ののアセットフォルダ内に「ファイル操作」でドラッグ&ドロップするだけ。
Unityの画面に戻ると、プロジェクトウィンドウの中にアセット(使用資産)として使えるようになっている。便利!
さて、ここで困ったのは、オブジェクトを入れ替えただけでは、ボールが迷路(私の場合maxで作った方)をすり抜けてしまうこと。
つまり衝突する物体として認識してくれない。はてさて?
それには、空のプレハブを作成して、その中に自分で作ったポリゴンオブジェクトを入れて、そのプレハブをヒエラルキー(画面の構造)に配置したら、そのオブジェクトにrigidbody(+kinematic)や物理マテリアルを設定するということ。
入れ替えただけでOKのはず!なんて、決め込んでいたので、これに気付くまでとにかく苦労。
で、うまく自作迷路で同じように動いたので、あとはいろいろとオリジナルの迷路を作っていこうと算段中。
16個くらいの迷路を作って、クリアタイムを全世界で競うようなiOSアプリなんかがすぐにできそう。(世の中に同じようなものがいっぱいありそうだけどね。)
XCODE 4系で旧OS向けの実機動作する時の注意 [iPhone SDK]
世の中がXCODE4に移行することを拒絶していた時代から、初めての開発ソフトがXCODE4という時代になりつつ在ると実感し、使いにくいながらもXCODE4へ移行することを覚悟。
学校ではアプリ制作をXCODE3で教えているのでダブルインストールした状態を維持しつつ、XCODE4を使い始めていくと、こんな事象が発生。
「古いOSで動いているiPodTouchの2Gでの実機動作ができない?」
2GはiOS4.2までしかアップできないので、旧OSにターゲットなどを合わせるのだが、なかなか手ごわい。で、最後にやって動いたパターンがあったので、メモ記事としてここに記載することに。
まずはXCODE3でプロジェクトのみを作成。
XCODE4でそれを開くと、スナップショットを作って少し改変するよ、と言ってくるのでそのとおりに従う。
アイコンファイルを57x57で適当に用意してinfo.plistなどにも登録。
コンパイラがarmv7だと上手く動作しなかったので、無理やりarmv6に書き換え。
もちろん実機のプロビジョニングなどのファイル関係はオーガナイザーで完璧にしておく。
debugのライセンスをデベロッパーのライセンスに設定。
info.plist関連では、Bundle Identifierも正しく設定。(これは関係なさそうだが)
そんなあたりの作業をすると、やっと実機での動作に成功。今は動いた途端のメモなので、もう少し事態を確認すると整理できるかも。
iPhoneアプリ開発メモ:画面の向きを固定する。 [iPhone SDK]
新規プロジェクトを用意した時に、以下のコードが見つかります。これを改造します。
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
ホームボタン(丸いボタン)が右に来てほしいなら以下の通りになります。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
つまり、横長の右なら
UIInterfaceOrientationLandscapeRight
横長の左なら
UIInterfaceOrientationLandscapeLeft
縦長で下、つまり通常の画面なら
UIInterfaceOrientationPortrait
縦長で上なら
UIInterfaceOrientationPortraitUpsideDown
とすることで、画面の向きを固定する事ができます。
iPhoneアプリ開発メモ:UIButtonの画像をアニメーションする [iPhone SDK]
.hファイルをこんな感じで。
#import@interface ExampleViewController : UIViewController { IBOutlet UIButton *NextBtn; } - (IBAction)btnNext; @end
.mファイルをこんな感じで
#import "ExampleViewController.h" @implementation ExampleViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *imageArray = [NSArray arrayWithObjects: [UIImage imageNamed:@"arrowBtn01.png"] [UIImage imageNamed:@"arrowBtn02.png"], [UIImage imageNamed:@"arrowBtn03.png"], [UIImage imageNamed:@"arrowBtn04.png"], nil]; [NextBtn setImage:[imageArray objectAtIndex:0] forState:UIControlStateNormal]; NextBtn.imageView.animationImages = imageArray; NextBtn.imageView.animationDuration = 0.3; [NextBtn.imageView startAnimating]; } - (IBAction)btnNext { //ボタンを押した時の処理を記述する。今回は関係なしで。 }
うまく動いたのでラッキーでした。
遅くなりましたがVISTAです。 [WEB制作]
ウィンドウズ・ビスタが発売されたのが本年1月30日だったような記憶があります。
で、アドビ社のCS3などの対応を保障したような製品も少なく、しばらくは様子見を決め込んでいて、その期間も長くなりいよいよ10ヶ月目となりました。
そして製作しているWEBサイトもさまざまな環境、さまざまなブラウザで閲覧しても大丈夫であることを保障する関係から、ついにビスタで閲覧しても大丈夫かどうか?も問われる時代となりました。
なので、遅くなりましたがVISTAのアルティメット版をインストールすることとなりました。
で、ビスタが動き出して初めての用事を、この記事書きにすることとしました。
これからどんな不都合が出てくるか判りませんが、エアロは綺麗で軽いし、まずは新しくて楽しくて綺麗な部分を一通り味わおうと思います。
それと先日発表された動く壁紙にも興味があって、これも今回導入に踏み切った理由のひとつでもあります。
まずは製作中のWEBサイトがちゃんと見えるかどうかの確認です。
今日から本番稼動! [WEB制作]
制作スケジュールが半年間もに及んだ超スローなWEBリニューアルプロジェクトが、ついに本番稼動の日を迎えました。
クレフィール湖東
http://www.senko.co.jp/crefeel/
まぁ、リニュ前の構成そのものは1997年に起業し始めた時の古い構造だったので、HTMLは手書きだったし、フレームを使うリスクも考慮されていないし、更新以外の手入れがなされていなかったので、当然と言えば当然の作業であったわけです。
やっと普通のホームページ風に修正されただけなので驚くような仕掛けは無いのですが、顧客がリニューアル後の完成版を心待ちにしていたので、お役に立てたという安堵感でいっぱいです。
ハイビジョンがやってきた [デジタルグッズ購入]
ソニーのブラビアがやってきました。ま、買ってきたわけですが。
リビングにドーンと登場したのなら42型くらいになるのでしょうけど、自室のパソコンデスクからの流し目の位置に登場させたので20型となんとも小型のものとなりました。
パソコンでビデオの編集をする仕事の関係で、16型の業務用モニタでバラエティなどを見ていたので、小型とは言えハイビジョンでの映像にはその鮮明さに最も驚いています。
カーナビで地デジは受信していたのですが、カーナビの画面はハイビジョンではないので、鮮明さに加えて質感までが見えるようになったのはスゴいことだなと感心しています。
これに慣れてしまうと、リビングにあるブラウン管タイプの横長機では、とうてい満足できなくなってしまうのだろうな、と思います。
奥さんがこの画質の差に憧れて、うっかりリビングと台所のテレビを買い換える気にならないようにしなければならないです。
リビングのテレビは2011年にアナログ放送が終了する直前で十分と思っています。
しかしハイビジョンモニタで今までDVDに録画したものを見ると、その画質の悪さに驚いてしまいます。これだけは知らなかった今までの方が幸せだったような気がします。
DVDソフトはD端子で接続してまずまずな画質で見れますが、ハイビジョン放送の録画が出来ないことを考えると、録画関連にも物欲大魔王が何かをささやきそうで怖いです。
ブルーレイディスクはまだまだ不要!と自分に言い聞かせています。
WEB制作の取材と称してキャンプへ [WEB制作]
ホームページ制作と日々のサイト更新を受注契約している為、いろいろなお客さん先へ新しい情報の取材に出かけたりします。
その中でも「大阪府立総合青少年野外活動センター」のホームページ掲載素材の取材で出かける時などは、完全にキャンプ場へお出かけモードになります。
大阪府立総合青少年野外活動センター
http://www.o-forest.org/outdoor/
取材用のデジタルカメラ機材一式を持って、子供達とはしゃぎながら山野を走り回ります。メタボな自分にとっては、とてもいい運動になります。
かつて30年前にここを走り回った自分が時々ユーレイのようにオーバーラップするので、とても不思議な気分になるキャンプ場です。
ブログに地図を貼り付けることが出来るらしいので、この機能を用いてキャンプ場の所在地を示してみます。