03 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 05

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】NCMBの簡単な使い方。データの保存の仕方。公式のマニュアルみれば大体わかるとおもうけどね! 

おはようございます。坂内っす。

先週金曜あたりにこんなTLが流れていました。


で、いざ話を聞いてみると、軽いソシャゲ並みの情報をDBに登録したいとのこと。
いやいや、そんなのNCMBじゃなくてサーバにDB建ててやらんと!ってのが本音ですが、調べてみると、ハルシオンブログにNCMBという言葉は2回でているものの、使い方書いてなかったので、いいネタになるかと思い、本日簡単に紹介!

最近でもないけどNCMBって言葉聞きません?
(N)Nifty(C)Cloud(M)Mobile(B)Backend
かな?あれ?そうなのかな?記憶で書いてます。

ICBMでもICMBでもなんでもありません。

ニフティーさんのクラウドでデータ管理とかができるよーってシステムですね。

http://mb.cloud.nifty.com/

うちもいくつかのアプリで使用しています。

まずはこちらでユーザ登録しましょう。
料金形態はいくつかありますが、BASICコースだと月200万回のAPIリクエストまで等の制限はありますが、無料で使えますね。


【NCMBへの連携方法】
①まずはNCMB上でアプリを登録しましょう


アプリを登録すると、アプリケーションキーとクライアントキーが決められます。
こちらは後でアプリに連携する際に使用するので、おぼえt(いつでも見れます)

②SDKをもらおうよ
アプリの登録が終わったら、NCMBのページの上部ドキュメントを押して、SDKダウンロードを選択します。
基本的な使い方はこのドキュメントをみればわかるんですけどね。

③SDKのパッケージをUnityにいれまーす
まっさらなプロジェクトにNCMBを入れるとこんな感じ。


開くといっぱいでてくるので、写真は撮ってません。

④お試し画面作成


簡単にこんな画面を作ってみます。

で、こんなコードを書いてみます。
[TestNCMBManager.cs]
using UnityEngine;
using UnityEngine.UI;
using System.Linq;

public class TestNCMBManager : MonoBehaviour {

public InputField inpNameObj;
public Dropdown drpAgeObj;
public ToggleGroup tglSexCodeGroupObj;
public InputField inpCommentObj;

public void OnClickSubmit() {
string name = inpNameObj.text;
string age = drpAgeObj.options[drpAgeObj.value].text;
string sex = tglSexCodeGroupObj.ActiveToggles().First().GetComponentsInChildren()
.First(t => t.name == "Label").text;
string comment = inpCommentObj.text;

Debug.Log("名前:" + name + "\r\n年齢:" + age + "\r\n性別:"
+ sex + "\r\nコメント:" + comment);
}
}


「登録するよ」ボタンを押すとこうなります。


これをNCMBに登録してみましょう。

⑤まずはNCMBのオブジェクトを用意します
空のGameObjectを作成し、オブジェクト名を「NCMBSettings」に変更します。
そのオブジェクトに、Assets->NCMB->NCMBSettings.csのクラスを付けます。
NCMBSettingsの「Application Key」と「Client Key」は①で作成したキーを入れておきます。


⑥NCMBにデータを登録するようにコードを変更
[TestNCMBManager.cs]
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
using NCMB;

public class TestNCMBManager : MonoBehaviour {

public InputField inpNameObj;
public Dropdown drpAgeObj;
public ToggleGroup tglSexCodeGroupObj;
public InputField inpCommentObj;

public void OnClickSubmit() {
string name = inpNameObj.text;
string age = drpAgeObj.options[drpAgeObj.value].text;
string sex = tglSexCodeGroupObj.ActiveToggles().First().GetComponentsInChildren()
.First(t => t.name == "Label").text;
string comment = inpCommentObj.text;

Debug.Log("名前:" + name + "\r\n年齢:" + age + "\r\n性別:" + sex
+ "\r\nコメント:" + comment);
Write_NCMB(name,age,sex,comment);
}

private void Write_NCMB(string name,string age,string sex,string comment) {
// TestDataObjectを生成
NCMBObject testClass = new NCMBObject("TestDataObject");

// オブジェクトに値を設定
testClass["name"] = name;
testClass["age"] = age;
testClass["sex"] = sex;
testClass["comment"] = comment;

// データストアへの登録
testClass.SaveAsync((NCMBException e) => {
if(e != null) {
Debug.Log("保存に失敗しました。\n ErrorCode : " + (string)e.ErrorMessage + "\n");
} else {
Debug.Log("保存に成功しました。\n objectId : " + (string)testClass.ObjectId + "\n");
}
}
);
}
}


データの保存は基本SaveAsyncで行う感じです。
クラスとしてデータストアの名前(DBのテーブル名みたいなの)を決めます。
NCMBObject testClass = new NCMBObject("TestDataObject");

その後、項目と、中に入れるデータを用意します。
testClass["name"] = name;
testClass["age"] = age;
testClass["sex"] = sex;
testClass["comment"] = comment;

で、testClass.SaveAsyncをすると…



成功と出ました!!!

これで、NCMBの方のデータストアを確認すると…




簡単!これだけでデータの保存ができます!!

他にもログインなどの機能もありますね。
こちらは公式の方見て頂ければと。
http://mb.cloud.nifty.com/doc/current/tutorial/tutorial_unity.html

さぁ、これで君もNCMBダー!

ってことで、簡単にですが、NCMBの使い方でした。

あでゅ~ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】リストの結合するメソッドがあるんすね。 

こんにちは。
大坂です。

ネタがなさ過ぎてまた超小ネタですね。
はい、ごめんなさい。

タイトル通りですがリストの結合です。
List.AddRangeメソッドってのがあってできるらしいですね。

ということでこんな感じで型の同じリストを作って。
結合してあげると簡単に結合できますね!
        List<int> list_1 = new List<int>() { 1, 2, 3 };

List<int> list_2 = new ListL<int>() { 5, 6, 7, 10 };

list_1.AddRange(list_2);

foreach(int i in list_1) {
Debug.Log(i);
}

結果


まぁ使おうと思って結局使わなかったんですけどね…。
ではまた…ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】GoogleAnalyticsを導入してみよう・・・あれ?今ってFirebaseのAnalyticsが普通なのかな?まぁいいや。 

おはようございます。坂内っす。

花粉がいまだに猛威を振るっております。
皆さま鼻水にご注意下さい。

さて、皆さまスマホアプリにGoogleAnalyticsとか入れてますか?入れてませんか?

Analyticsって何さ。って方もいると思うので簡単に紹介。

といっても、詳しくは公式を見てください。
https://developers.google.com/analytics/?hl=ja

簡単にいうと「スマホアプリのアクセス解析ツール」といった感じでしょうか。

アプリに導入するのは簡単なので、是非試してみてください。

さて、まずはGoogleAnalyticsを登録します。
https://analytics.google.com/analytics/web/provision/?authuser=0#provision/SignUp/

登録するとこんな感じの画面になります。



(今回はテストアプリという名のアプリ名で登録しました。)

さて、次にUnityにgoogleAnalyticsのPluginを入れます。

https://github.com/googleanalytics/google-analytics-plugin-for-unity

こちらからパッケージを落とします。

上記から落とした圧縮ファイルを解凍し、「GoogleAnalyticsV4_nobitcode.unitypackage」を実行します。
(bitcodeとかnobitcodeとかありますが、各アプリに対応したやつ入れればいいかと)

さてさてさーて。

分かりやすいように、こんな感じで2つのシーンを作ってみました。


Canvasに次のスクリプトを付けます。
[Scene1Manager.cs]
using UnityEngine;
using UnityEngine.SceneManagement;

public class Scene1Manager : MonoBehaviour {
void Start () {

}

public void OnClickMoveScene() {
SceneManager.LoadScene("Scene2");
}
}


同じくScene2のほうにもScene2Manager.csを付けます。
(Scene2Managerの中身は1と同じで、LoadSceneの中がScene1になってるだけです。)

それではGoogleAnalyticsのオブジェクトを付けてみましょう。

タグ「GAv4」を作成し、Assets->Plugins->GoogleAnalyticsV4->GAv4のオブジェクトにtag「GAv4」を指定します。
Scene1Manager.csを以下のように変更。

[Scene1Manager.cs]
using UnityEngine;
using UnityEngine.SceneManagement;

public class Scene1Manager : MonoBehaviour {
public GameObject gav4Obj;

void Start() {
if(!GameObject.FindGameObjectWithTag("GAv4")) {
Instantiate(gav4Obj);
}
// トラッキング
GoogleAnalyticsV4.instance.LogScreen("Scene1");
}

public void OnClickMoveScene() {
SceneManager.LoadScene("Scene2");
}
}


gav4ObjにはAssets->Plugins->GoogleAnalyticsV4->GAv4のオブジェクトをアサインします。
(今回Scene1とScene2を行ったり来たりするため、複数GAv4オブジェクトが作成されてしまうため、あえてInstantiateでやっていますが、タイトル画面などゲーム起動時に1回しか訪れないシーン等がある場合、はじめから配置しておく方が簡単です)

GAv4オブジェクトにGoogleAnalyticsの設定をします。



Androidトラッキングコードは、GoogleAnalyticsのトラッキングコードと書かれているやつです。
今回Unityでもトラッキングできるようにするため、OtherTrackingCodeにもAndroidトラッキングコードと同じものを入れてます。

これで実行してみると…

GoogleAnalyticsのリアルタイムの項目でちゃんと取れるのが見れます。


実際にはこのコードでどこのシーン(画面)を見ているかを取ることができます。
GoogleAnalyticsV4.instance.LogScreen("Scene1");


【イベントを取る】
ボタンをScene2に作ります。


Scene2Manager.csを改造します。

[Scene2Manager.cs]
using UnityEngine;
using UnityEngine.SceneManagement;

public class Scene2Manager : MonoBehaviour {
void Start() {
// トラッキング
GoogleAnalyticsV4.instance.LogScreen("Scene2");
}

public void OnClickMoveScene() {
SceneManager.LoadScene("Scene1");
}

public void OnClickTestButton() {
// イベントトラッキング
EventHitBuilder eventBuilder = new EventHitBuilder();
eventBuilder.SetEventCategory("課金");
eventBuilder.SetEventAction("テスト1購入");
GoogleAnalyticsV4.instance.LogEvent(eventBuilder);
}
}

テストボタンを押した際に、OnClickTestButtonが呼ばれるようにする。

これを実行すると、次のようにGoogleAnalyticsでイベントも取れます。


という感じで、簡単にAnalyticsを導入できます。

今まで導入してない方、お試しあれ!

導入しても、うちみたいに見方と使い方が分からないとあんまり意味ないですけどねっ!

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】iTunesConnectにipa上げた後にくるメールにMissing Info.plist keyがある。 

こんにちは。
大坂です。

昨日は暑かったですが今日は気温が下がって過ごしやすそうですね。

さて今日のネタです。
まぁタイトル通りですが。

ipaをあげた後にこんなメールが来ました。


まぁそのままInfo.plistにキーが足りねぇよって話です。
このメールの場合は、
・NSCalendarsUsageDescription
・NSCameraUsageDescription
が足りないって言われてますね。

ということでこんな感じで追加します。


Information Property Listをクリックすると「+」ボタンが出るので押すと新しいキーが増えます。
で増えたキーの上と下向いた▲のところ押してあげるとキーが選べるので対象のを選ぶ感じですね。
最初カーソル合わせると「-」「+」ボタンが出てきて場所が変わるので少し注意ですかね。

理由は自分で意識して使っている権限だったらそれを書けばいいかと思います。
広告で使用しているものは「広告で使用しています」と科適当に書いておけば審査は通ります(ぇ

ということで短いネタでしたっと。

ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】オブジェクトがオブジェクトに当たった時に消すようにしたいよ!って時にこうやってます。 

こんにちは!坂内っす。

今日は「オブジェクトが他のオブジェクトにあたったら消す」方法。

え?そうです。基本ですね。

例えば、弾が飛んでいき、壁にあたったら消えるようにします。

弾に以下のスクリプトを付けます

[Bullet.cs]
using UnityEngine;

public class Bullet : MonoBehaviour {

Rigidbody2D myRigid;
float SPEED = 7f;

private void Awake() {
myRigid = GetComponent<Rigidbody2D>();
}

void FixedUpdate() {
BulletMovement();
}

void BulletMovement() {
myRigid.velocity = new Vector2(SPEED, myRigid.velocity.y);
}

private void OnCollisionEnter2D(Collision2D collision) {
Destroy(gameObject);
}

}


OnCollisionEnter2Dが「何か他のオブジェクトに衝突したとき」のメソッドです。


こんな感じで、当たるとBulletオブジェクトが消えます。

このタイミングでエフェクト(パーティクルを出してみましょう)

こんなエフェクトを用意しました。


これを弾が壁にぶつかった時にだすようにBullet.csを変更します。
[Bullet.cs]

private void OnCollisionEnter2D(Collision2D collision) {
foreach(ContactPoint2D point in collision.contacts) {
GameObject effect = Instantiate(brokenParticlePref);
effect.transform.position = point.point;
}
Destroy(gameObject);
}

変えたのはOnCollisionEnter2Dです。

foreach(ContactPoint2D point in collision.contacts)
で、当たった場所の座標が取れます。

これでこんな感じになると思います。



なかなかうまく当たりませんが(笑)

当たった場所からエフェクトが出てる感じになりますね。

というわけで、基本に戻ってゲームで使いそうなものを挙げてみました。

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0