xcode7でアイコンを設定したら、プログラムで画面サイズを取得してるところがおかしくなった

事象
アイコンを設定しようとしておりました。
以下の流れで実施しました。

左ツリーの一番上クリック、TARGETSのiOSをクリック、Generalをクリックして
App Icons and Launch ImagesのApp Icons Sourceを選択

gazotest0_xcodeproj

use asset catalogをクリックする以下の画面が表示されます

gazoTest_xcodeproj

Migrateをクリックすると以下のように設定が変更なりました。

gazoTest_xcodeproj1

よく見るとなんにも触っていないLaunch Images Sourceも変更されておりますが
作業時は一切気づいておりませんでした。

この後、AppIconの右側の矢印をクリックしてアイコンを設定し、
アイコンが反映されているかをシミュレータで検証したら
ゲーム画面の表示がおかしなことになっており、
プログラムでiPhone6 Plusの画面横幅を取得させたら

”960”となってました。

@shinichi399さんよりTwitterで
「Default.pngを設定してる解像度に対応するんで、設定したら直ると思いますよ。」
と教えていただき、やっとLaunch Images Sourceを設定しないといけないんだなと理解しました。

Launch Images Sourceで
各サイズのDefault.pngを設定して、再度iPhone6s plusのシミュレータを実施したところ
うまくいきました。
@shinichi399さんほんとうにありがとうございました。

ちなみに各サイズのDefault.pngはまだ作ってなかったので
以下のサイト様の画像を使わせていただきました。
iPhone6/iPhone6 Plus画面対応用の起動画像を用意しました
ありがとうございました。

【cocos2d-x】【Sqlite】DB更新時の反映方法【Xcode】

何度もここで迷うので手順をメモしておく

【ファイル削除】
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1.「Finder」を開く
2.メニューから「移動」を選択
3.キーボードの[option]キーを押しっぱなし
 「移動」の一覧に「ライブラリ」が表示される
4.「ライブラリ」をクリック([option]キーは押しっぱなしでクリック)
5.フォルダ[Developer]を選択
6.検索窓で使用しているsqliteファイルを検索

7.出てきたファイルを削除
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

これは私のやり方ですが、
現在使用しているSqliteのファイルを更新した場合
【Xcode】
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1.Xcodeのツリー上からSqliteファイルを右クリック
2.「Delete」を選択
3.「Remove Reference」を選択
4.「Resource」フォルダを右クリック
5.「Add Files to …」を選択
6.sqliteファイルを選び直す
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

もっといい方法があったら教えてください!

【cocos2d-x】CC_SYNTHESIZE_RETAINでハマった件【C++】

この本に書かれていた
CC_SYNTHESIZE_RETAIN

他のサイトでも、これで使用した変数は自動的にretain()とrelease()を実施してくれるとかなんとか。
正直retain()とrelease()もはっきりわかってるわけでないのですが、
共通変数的な使い型が出来て、CC_SYNTHESIZE_RETAINって便利だなぁぐらいに思っておりました。

今回ハマったのは上の本にのってない、ui:PageViewをCC_SYNTHESIZE_RETAINで定義してしまい。
setとかgetとかイマイチわかってなかったので(プロパティってなに?)
宣言した変数にに対してこんな感じで書いてしまっていて

そしてこれが画面を表示したときにはエラーにならない

違う画面(クラス)に移動した際にアプリが落ちるだけ(しかも違うクラスのソースでエラーになる)
消去法で原因を特定したのですが、いまいち意味がわかってなかったので

CC_SYNTHESIZE_RETAINでググったところ

あとCCObjectを安全にセットできるCC_SYNTHESIZE_RETAINがある。
これはsetFunc()した場合
1)中で前まで所持してたものをrelease()し、続いて
2)新しくセットするものをretain()してくれる仕組みになってます。
cocos2dxで使いそうなマクロまとめ

・・・

良く見たら今まで使っていたLabelやらSpriteやらは全部Setで設定してたので
以下のように書き直したら動きました。

ですが、検証中に
.hファイルにて
CC_SYNTHESIZE_RETAINではなく

と書いたら動いたので、わざわざこれに書き換える必要性とか、、、
は今後勉強していこうと思います。

【愚痴】cocos2d-xが重くてモチベが低かったお話(今は高めですけど)

これはここ一年ぐらいの愚痴というかいろいろつまっていたことを吐き出してます。

spineをいれたいと思った

私は絵が描けません。
そのため画像のアニメーションを考えたときに、一枚一枚絵を書くよりも
spineを使用して、画像のキャラクターを動かした方がいいのではと思い
spineを導入することにしました。

当時(去年)、私はcocos2dでゲームを作っていました。
spineもどうやらcocos2dに対応していたのですが
(公式にcocos2dのマークがあったと思ってます。)、
残念なことに日本のwebサイトに情報がのっていませんでした。

私のようなど素人が、日本語の情報がないと
新規にspineというツールの導入をするのは難しいと思い
spineとの組み合わせで日本語の情報が多かった
cocos2d-xに手を出してみることにしました。

Objectiv-CからC++には変わるとはいえ
CCLayerやCCSceneの考え方は一緒みたいだし、ちょこっと書き方変えるだけで
簡単に移行できそうだと私は思っていました。(これが甘かった)

当時cocos2d-xの安定版が3.2だったので、とりあえずダウンロードしました。
なんだかんだ設定して、いろんなサイト様に助けられて
とりあえずサンプルをダウンロードしてみたところ

「なんか重い、、、」

でも作業はなんとか出来そうだし、、、

そんなこんなでしばらく続けてみました。

いきなりspineが動かない。

spineで作成されたサンプル君をXcodeに反映し、実行してみた。
しかし、全然動かない。まったくもって動かない。
意味がわからない。

いろいろ調べた結果、どうやらspine用のソースをダウンロードしてきて
cocos2d-xにあるソースをアップデートしなくてはいけないようで
結構しんどかった。。。

新しいプロジェクトを作るたびにこれをやらなくてはいけなくてかなり辛かった。
(はじめてのプログラム言語で、0から書き直しを行うたびに設定していたため)

※しんどかったって言うのは、今振り返ればデバッグに相当時間がかかっていて
 設定を確認するたびになんとなくストレスを抱えていたのかなぁ

とりあえず開発は続けていた

cocos2d-xの3.2はなぜかCCLayerって書くと警告が表示されて
というかいろんなサイト様からコードを参照させてい頂き
自分のプロジェクとに書き込むと
“deprecated”の文字!
どこかのサイト様に書かれていたのですが
私がはじめたバージョンあたりで、cocos2d-xはよりC++チックに書かなくていけなくなり
Objective-Cからさらに離れたと、、、

「なぜにこのタイミングで!!!」と強く思ってた記憶があります。

それでもなんとかいろんなサイト様を見ながら
なんとなくすすめていた開発ですが、、、
シミュレーターへのデバッグに超時間がかかってしまって、

デバッグ→確認→修正というトライ&エラーを回数こなしたいのに
明らかにcocos2dよりもデバッグが長いcocos2d-x。

その長い待ち時間に、iPhoneを開いたりWebを見に行ったりを始めてしまって
開発してるつもりが、実はサボってる時間の方がながくなっていました。。。

状況打破を試みました。

iPhoneアプリはなるべく定期にリリースしたい。
一時期は2か月一回ぐらいでだせていたのに、、もう一年もだしてない。。。

ので、まず自分の作業時のボトルネックを探して見ました。
まずiPhoneをいじっている時間。
一旦作業机に座ったら、いじらないようにしようと思ったのですが
やっぱりデバッグが長くてついつい触ってしまう、弱い心

ので、「Macが重い」で検索をはじめました。

いろいろ試した結果
1週間に一度下記の対応を実施するようにしました。

クリーニング(Onyx)
ディスクの権限確認(ディスクユーティリティ)

これでMac周りの動きは大分早くなったのですが
やっぱりXcodeからデバッグに関しては全然早くならなかったです。

なんかもっとはやくならないかなぁといろいろ調べていたら
static libraryというとても、とーっても素敵な単語見つけました!!!

今の私の知識では説明しきれないかもしれませんが多分
「libraryを先にビルドしておいて、デバッグ時に毎回ビルドするのを防ごうよ」※static libraryにすることの利点。
だと思ってます。

見つけたサイト様で使用していたのがcocos2d-x 3.4だったので
3.4にバージョンアップして、いつものように先にspineの設定を終わらせようとしたら、、、

とくになんの後付処理をしなくてもspineが動いた!!!!←かなりうれしかったです。
あの毎回毎回設定してた作業はなんだったのかと
(フォルダの退避、コピー等)

しかも、この時点で3.2より3.4の方がデバッグが早い!!!

そして上記サイト様の手順に従い
static libraryを作成して反映した結果。。。。

これが、めっちゃ早い!

今、開発が楽しくてしょうがないです。デバッグ中にiPhoneとか見なくなりましたしw
レスポンスって超大事ですね。

今、私は去年考えたアプリを作っています。
まだ完成まで時間はかかりますが、とにかく楽しく作ってます。

※C++に変更して躓いているのはまた別途。

【cocos2d-x】書いたコードがうまく反映されない。よくわからないところでエラーになる【リセットしましょ】

今回起こった事象は、

“一旦書いたコードを消した後に
TableViewを反映させたコードを書いたのですが。
(別のファイルにクラス違いで同じコードが書いてあり、動作していた。)
なぜかそのクラスを呼び出すとTableViewをcreateするところで
アプリが止まってしまいました。”

続きを読む