cocos2d-x(c++) で、int(整数)をstring(文字列)に変換

cocos2d-x(c++) で、intをstring(文字列)に変換

環境 cocos2d-x 3.14(c++)

StringUtils::toString()で、int型からstring型に変換できる。

int hogeInt = 123;
string hogeStr = StringUtils::toString(hogeInt);

で、下記でもできるのですが、androidでビルドするとエラーになるので、
下記を使う場合はご注意を。


string hogeStr = std::to_string(123);

cocos2d-x(c++) 色(Color3B等)を定数の配列でカラースキーム化

cocos2d-xで、色のパターン等用意する時、
配列で定数化しておくと便利なのでメモ

宣言


// Color3Bの型で3色用意 static const std::vector<Color3B> COLOR_LIST = { Color3B(255,0,0), //赤 Color3B(0,255,0), //緑 Color3B(0,0,255) // 青 };

呼び出し


COLOR_LIST.at(0); // 赤 COLOR_LIST.at(1); // 緑 COLOR_LIST.at(2); // 青

もちろん、Color4Bでも同じ要領

ちなみに赤を出したいだけなら、、、


Color3B::RED

とするだけなので、この記事はそういう趣旨じゃない。。。

cocos2d-x(c++)ひっかかりそうなポイントメモ

ただ生成したNodeのgetContentSize()は0。


node->getContentSize().width // 0

座標は、左下が基準

OpenGLだからか、左下が基準。

oya->addChild(ko)をすると色々挙動が難しい

子は親のアンカーポイントを無視する。

getBoundingBoxの座標が連動していなかったり。

androidでビルドする時、std::to_string()を使うビルドできない。

下記で代用


int newInt = StringUtils::toString(hogeInt);

Vec2でキャストせずにintとしてつかっているといつの間にかずれるのでちゃんとキャストしよう


Vec2 vec2Hoge = hogeMethod(touchLocation); log("vec2HogeFloat x:%f y:%f",vec2Hoge.x,vec2Hoge.y); log("vec2HogeInt x:%i y:%i",vec2Hoge.x,vec2Hoge.y);

cocos2d-xのアプリ開発のお気に入り環境メモ

cocos2d-xでAndroidとiOSのアプリ開発で使っている環境メモ

言語&IDE

C++でxcode使ってる、

もうcocos creator使った方がいいみたいですが。

UI&アニメーションの開発エディタ

下記ツールでUIをGUIエディタ作れる。

cocos studio

version3.10で ※注意サポート終了

下記からダウンロード可能

http://cocos2d-x.org/docs/deprecated/studio/

メモ

  • 下記particle2dxのplistをそのまま取り込める。
  • opacityや、colorのアニメーションも、デフォルトだとタイムラインに表示されないが、record frame の✅を入れると表示される。

パーティクル用のエディタ

Particle2dx

http://particle2dx.com/
* オリジナルの画像がアップロードできないようなので、一度エクスポートしてから、画像ファイル名をplistをテキストエディタで開いて変更する。
* もしくは、エクスポート時の画像ファイル名と同じ画像ファイルで上書き。

シェーダー周り

cocos2dx用というわけでないないがシェーダーのデモに使える

http://glslsandbox.com/e#38793.0

Unityで、#UNITY_IOS等の、エディタ上とプラットフォームの判定を勘違いしてた

Unityで、よくAndroidや、iOSの条件分岐かく 「#if UNITY_IOS」等の分岐ですが、

勘違いして使っていました。


#if UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("unityエディタ含むよー"); #endif

を、Unity上のswitch platformで 『iOS』にしていて、
Unity上で実行したら。。


unityエディタ含むよー

となるとおもっていた。。。汗

違かった。。。

実際は、


iosだよー

と、なった

ほんまアホやった。。


#if UNITY_EDITOR Debug.Log("Unityエディタで実行中だよー"); #elif UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("その他だよー"); #endif

#if UNITY_EDITOR

これがしたかったやつや。。

さっきのはあくまでswitch platformで指定しているiOSの条件にものでした。。

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」というエラーが出たら

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」と出た時

Android Studio2.2を使っていて、いきなり下記エラーにでくわした。


Error:Execution failed for task ':app:validateSigningRelease'. > Keystore file

既存のプロジェクトをファイルをコピーしてから作ったのがよくなかったのかな、
keystore のファイルも新しく作り直したはずなのに、このエラーが消えない

解決策

  • Make Rebuild」や、「Android Studio」を再起動したらエラーがでなくなりましたわ汗

Android Studioで「Error running app: Unknown run configuration type AndroidRunConfigurationType」でビルドできなくなった

Android Studio2.2で、急にビルドができなくなった。

android studio app

Runで実行する「app」がUnknownになって下記エラーになっている。


Error running app: Unknown run configuration type AndroidRunConfigurationType

試行錯誤

1. プロジェクトがおかしくなったのかなと思って、いままで普通に動いていたプロジェクトも実行できなくなっている

2. PC再起動や、AndroidStudioが壊れたかなと思って再インストールして、実行かわらず。JDK周りでエラーがでていたので、次は

3. JDKをインストールしてアップデート

4. 他にもSDK Managerで、プラグイン系を見てみると、Firebase周りで、なんやらエラーが、「Firebase testing」というチェックを外して、[Make Project]をしてみると、、、、

5. 、、、、、!!を、ちゃんとappモジュールがUnkownじゃなくなって、、無事解決!実行できました!!

adbでAndroid端末やエミュレータのファイルを覗く方法

adbで端末やエミュレータのファイルを覗く方法

1. ターミナルを開き、

2. adbでアクセスできるデバイスを確認


$ adb devices

3. adbで端末orエミュレータにアクセスしてファイルチェック

端末にログイン


$ adb -s emulator-5556 shell

対象ファイルがあるかチェック


$ ls -la /data/data/アプリのパッケージ名/files/test.png

※OSバージョンや端末によって使えるlinuxコマンドが限られていそう

端末のファイルをmac等ローカルPCにひっぱってくる


$ adb -s emulator-5556 pull /data/data/アプリのパッケージ名/files/test.png