FC2ブログ
07 «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.31.» 09

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

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

 

【ハルシオンブログ】DateTimeのstring変換の一部書式は専用メソッドがあるよ。 

こんにちは。
大坂です。

DateTimeをstringに変換するときに「ToString("yyyy-mm-dd")」とかで使いたい書式に変換していますが、いくつか書式については専用のメソッドがあるのでメモ。
DateTime now = DateTime.Now;

Debug.Log("ToLongDateString:" + now.ToLongDateString());
Debug.Log("ToShortDateString:" + now.ToShortDateString());
Debug.Log("ToLongTimeString:" + now.ToLongTimeString());
Debug.Log("ToShortTimeString:" + now.ToShortTimeString());

結果はこれ


この書式にしたい場合はいちいち指定しなくてもいいので楽ですね。
ということで今週もメモ的なやつでした。
ではまたノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】みなさんPlayfabって知ってますか?MicrosoftのBaaSなんですが、安くて使いやすいのでお勧め! 

こんにちは。坂内っす。

最近Playfabをちょこちょこ使い始めました。
Playfabといわれてもピンと来る方は少ないと思います。

Microsoftのゲームに特化した BaaS(Backend as a Service) です。
もちろんUnity対応ですよ。

本日は簡単な紹介をしていきたいと思います。

どんなものかというのはこちら。
[個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう]
https://www.slideshare.net/dmasubuchi/a-azure-playfab-liveops


今回は紹介ということで、ばしばしリンク張ります。

[公式Unityでのクイックスタート]
https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/unity3d/quickstart


[PlayFabでUnityを動かしてみる -その1下準備編-]
https://qiita.com/ume67026265/items/c89b391e36855f45586f

[UnityでPlayFabのタイトルデータを取得して表示する]
https://qiita.com/_y_minami/items/3396f832d868d52bbbaf

[【PlayFab入門】UnityでPlayFabサーバーとデータの送受信]
https://questgames.hatenablog.com/entry/2019/04/28/191122


こんな感じでゲームのマスターデータとかをサーバーで管理し、Unityで使用するといったことができます。

ゲーム内で使用するアイテム等の管理がサーバでできるので、新しいアイテムの追加やアイテムのステータスの変更等がアプリの更新無しに簡単にできます。


もちろんアイテムの更新だけならNCMB等でも簡単にできますが、Playfabの良さはそのほかにも色々な機能が安価で使えます。

「でもMSさんのサービスとかお高いんでしょ~?」って思いがち。

100,000 MAUまで無料!!!(たぶんそんな感じ

これは使わないと損ですよね!

是非さわってみては?


ということで、今日はPlayfabの宣伝でした。
あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】型のキャストができるかできなかの判別するとき 

こんにちは。
大坂です。

今日もC#なお話。

型のキャストができるかできなかの判別したいときがたまにあります。
そんなときは「typeof」や「is演算子」を使用すると思いますが、
適当にやって結果が違ってあれ?と思った事があったので違いについてのメモ。

こんなクラスがあったとき。
public class TestBase { }
public class Test_1 : TestBase { }
public class Test_2 : Test_1 { }
public class Test_3 : Test_2 { }

こんな感じで見てみます。
TestBase test = new Test_2();

bool isTypeofTestBase = typeof(TestBase) == test.GetType();
bool isTypeofTest_1 = typeof(Test_1) == test.GetType();
bool isTypeofTest_2 = typeof(Test_2) == test.GetType();
bool isTypeofTest_3 = typeof(Test_3) == test.GetType();
Debug.Log("isTypeOfTestBase:" + isTypeOfTestBase);
Debug.Log("isTypeOfTest_1:" + isTypeOfTest_1);
Debug.Log("isTypeOfTest_2:" + isTypeOfTest_2);
Debug.Log("isTypeOfTest_3:" + isTypeOfTest_3);

bool isTestBase = test is TestBase;
bool isTest_1 = test is Test_1;
bool isTest_2 = test is Test_2;
bool isTest_3 = test is Test_3;

Debug.Log("isTestBase:" + isTestBase);
Debug.Log("isTest_1:" + isTest_1);
Debug.Log("isTest_2:" + isTest_2);
Debug.Log("isTest_3:" + isTest_3);

結果。


「typeof」の方は指定したクラスで判別して、
「is演算子」の方は基底クラスで判別するという違いがあるみたいですね!

では今週もこれにてノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Photon(PUN2)得意な方教えてください!Photonでプレイヤーがアイテムとかとった時の処理について 

こんにちは。坂内っす。

本日はPhotonのお話。

Photonを使っている人ならわかるかもしれない。
PhotonNetwork.Instantiateで作成したものは、それを作ったオーナーしかPhotonNetwork.Destroyができない。

これPhotonの常識。

ここまではいい。

AさんBさんの二人でPhotonを使って対戦している時に、アイテムXが出るとしよう。

AさんがアイテムXをとった時には以下のようにしています。

[ItemBase.cs] アイテムが自分のキャラに触れたときの処理

private void OnCollisionEnter(Collision col) {
if (col.gameObject.tag == "Player") {
// 触ったプレイヤーを取得
Player player = col.gameObject.GetComponent<PlayerController>();
if (player.photonView.IsMine) {
photonView.TransferOwnership(player.photonView.OwnerActorNr);
// アイテムの獲得
player.GetItem(アイテムX);
PhotonNetwork.Destroy(gameObject);
}
}
}



TransferOwnerShipをすることで、アイテム自体のオーナーを取得したユーザに変更し、最後にアイテムのオブジェクトを消しています。

ここで問題があります。

①この方法でいいのか?
②A、Bの二人が同時にアイテムに触れた場合にエラーがでる。


まず①ですが、こんな感じでやってますが、この方法で消す処理はいいのか?
もっといい方法があるのか?
あるなら教えてフォトンマスター!


②二人同時でアイテムに触れると、2ユーザからDestroyが呼ばれて落ちる。

消すために、オーナーシップを触ったユーザに移し、Destroyをしているため、複数人同時に触ると誰かがエラーになってしまうんです。
厳密にはこんなエラーがでてるので、「AさんがDestroyしてるけど、PhotonViewがもうないよ」って意味ですよね。


Ev Destroy Failed. Could not find PhotonView with instantiationId 15. Sent by actorNr: 1


これの解決法っていいのありますか?

実は、触ったユーザにオーナー権を渡すのではなく、RPCで消す処理を投げて、MasterClientが消すとかの方がいいのかな?

この辺良く分かってないんですよね。

ってことで、素敵な解決法お待ちしています!

Photonなら任せろ!って方教えて!

ってことで、色々試してみます!あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】整数を2進数、8進数、16進数にしたいとき 

こんにちは。
大坂です。

10進数を2進数に変換したかったときのメモです。
やることは簡単で「Convert.ToString」を使うだけです。
8進数や16進数にもできるのでついでに。
    int test = 23;
Debug.Log("2進数:" + Convert.ToString(test,2));
Debug.Log("8進数:" + Convert.ToString(test,8));
Debug.Log("16進数:" + Convert.ToString(test,16));

結果


注意点としては第2引数に指定できるのが「2」「8」「10」「16」だけです。
    int test = 23;
Debug.Log(Convert.ToString(test,5));

とかやって実行するとエラーになりますね。


ということで2進数への変換とかは簡単にできますよって話でした。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0