08 «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.» 10

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

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

 

【Unity】PlayerPrefsのデータ削除 

こんにちは。
大坂です。

おやー来週当たり台風がまた来そうなんですかね?
まだ進路が大きくずれるかもしれませんが曲がってくる予報ですね。

さて、今週のネタです。
UnityでPlayerPrefsを使ってデータ保存してる人とかも多いと思いますが、
これを消すときの話ですね。
普段はこんな感じで消してたりします。
Windows環境でEditor実行時のデータ消すときはレジストリを消す。
Androidだとアプリごと削除してアプリを入れなおすか、アプリのデータを消す。

とまぁ、特に消すのに困りはしないんですが、
PlayerPrefsのAPIでもデータ削除があるのでそれの紹介。
用意されてるのはこの2個。

// すべて削除
PlayerPrefs.DeleteAll();
// 指定したキーだけを削除
PlayerPrefs.DeleteKey("key");


作ってる途中とかいろいろデータ削除して確認したいときは、この辺のボタン用意しておくと少しだけ楽かもしれませんね!
ということで、これだけなんですけどね!

短いですがこれで終わりですよ~。
ではまた来週ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【ネタなし】ichipixelとPixelArtPark3いきたかったーー! 

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

最近も色々と開発者のイベント行われておりますねー
9月23日には「ichipixel」というイベントが関西の方で行われておりました。
https://twitter.com/ichipixel
行ってみたいけど関西遠いっすorz

また、9月25日には千代田区にて「PixelArtPark3」が行われておりました。
こちらはドット絵の祭典ということで、ドットのグッズ即売会などが行われてました。
https://twitter.com/pixelartpark
こちらは近めでいけなくもなかったけど…絵に才能がない俺は…というか、ガチでお金がないので、家から出ない方向で生きていきます。
開発のお話しですが、ネタがございません。

某対戦ゲームを作ったり、全然関係ないカジュアルなもの作ったりしてますが、どれも中途半端&最近開発以外のところに時間が割かれていて、なんも進んでない・・・
というかBlender触ったりして無駄に時間が過ぎていました…
ポケガ2の大コケがまだ響いてますね( ノД`)シクシク…

ほんまネタないです。すいません。
仕事します。

あでゅ~ノシ

Category: その他日記

tb 0 : cm 0   

【Unity】キャラクターチップとか切り分けてたけど、分けなくても使えますよね(今更 

こんにちは。
大坂です。

急に寒くなりましたね。
季節の変わり目なので皆様体調にはお気を付けを…。
自分はもうだめでしたorz

さて、今更な話題です。
ドット絵のキャラクターチップとか使うときに昔作ったアプリは切り分けて使ってましたが、
これって自分で1個1個に切り分けなくても使えたんですよね…。

こんな感じのやつですね。画像はぴぽやさんのを使用させてもらっています。


とりあえず画像の設定から。
SpriteModeをMultipleに変更して、SpriteEditorボタンを押す。


こんな画面が開きます。

小さいですけど、左上の「Slice」を押すと切り分け方を設定できるのが開くので、
切り分け方を設定していきます。

今回は使用している画像の各キャラクターが32×32なので、
Typeを「Grid By Cell Size」で切り分けてみます。

で、Sliceボタンを押すと

ちゃんと切り分けられてる線がでますね。
あとはApply押して×で閉じれば画像の設定は終わりです。

こんな感じで連番で分けられます。


あとはこれを取得して使うだけですね。
といっても取得するコードは書くほどでもないんですけどね…。
   // いったん全部取得する。おおもとのファイル名を指定。
Sprite[] sample = Resources.LoadAll("sample001");

// 取れてる確認
for(int i = 0; i < sample.Length; i++) {
Debug.Log(sample[i]);
}

Resources.LoadAllを使用して全部取得してからそれぞれ使います。
一応吐き出したログです。


一応順番に配列に入ってますが、sample[i].nameで名前も使えるので、使いたいファイル名で取得したりできますね。
素材の準備としてわざわざ切り分けたくないときとかは使えますかね。

では、今週もこれにて。
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】TGS2016行ってはきたが、ネタがない。そしてuGUIのボタン押しっぱなし処理の作り方メモ!! 

おはようございます。
先々週くらいにいい年になりました。
あと少しで40の坂内っす。
本日は敬老の日です。年寄を敬ってください。

先週末は毎年恒例TGS行ってきました。
そして今年も全然写真撮ってきませんでした。

どこのブース回ったっけなぁ
アークシステムワークス、楽天、DMM、Live2D、他なんか、インディーゲームって感じかなぁ。
VR周りは人多いし、整理券とかめんどいので近寄ってもないっすなー

あ、シヴィライゼーション6のブースにも寄ってきたよ!


ツイートしたら、各方面から色々なお言葉を頂きました。


はい、麻薬王でもギルガメッシュでもありません。
いじめカッコワルイ。

それではUnityの話でも。

uGUIのボタンについて。
ただのボタンじゃなくて、「押してる間~~~の処理をする」ボタンについて。
こんな感じのコード書きますよね。


using UnityEngine;
using System.Collections;

public class BtnTest : MonoBehaviour {
private bool onDownFlg;

public void OnDown() {
Debug.Log("おしたよ");
onDownFlg = true;
}

public void OnUp() {
Debug.Log("はなしたよ");
onDownFlg = false;
}

void Update() {
if (onDownFlg) {
Debug.Log("おしっぱなしー");
}
}
}




こうすると、こんな感じになります。


一応これで処理としては動いてますよね。
ただ、上記動画を見ていただければわかりますが、ボタン自体のアニメーションなどがないため、押されてる感じがしません。

そんな時はButtonコンポーネントをつけちゃいましょう。


こんな感じ。
ボタンコンポーネントは押されたときのアニメーションとかのためだけにつけるので、OnClickとかは触らないでもオッケー☆⌒d(´∀`)ノ



ちゃんと押された感じになりましたね!

っていう、話。

これで押しっぱなしボタンが簡単に作れるね!!

では、小ネタでしたがこれで終了!あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】先週書いたLogging設定でログが出ないようにできなかったので、その辺をちょっと調べた。 

こんにちは。
大坂です。

今年も今日からTGSですね。
行ってる人はこのブログ見ないでしょうけど楽しんできてください!
ハルシオンシステムの二人は明日行ってきます。

さて、今週の話題でござる。
先週はUnity5.4で設定できるようになったLoggingがスタックトレースの範囲について書きましたが、
ログが出力されなくなると思って使って残念だったので、ログを簡単?に出力されなくするやり方ですね。

書くのは1行書けばでなくなるんですけどね。

Debug.logger.logEnabled = false


これを書くだけです。
でもこいつはそのコード内でしか効かないみたいです。
たくさんのクラスでDebug出してると全部に書かないといけないので、ログ用のクラス作ってあげればいいんですかね。
適当ですけどこんな感じで。
public static class MyDebug {

static MyDebug() {
Debug.logger.logEnabled = Debug.isDebugBuild;
}

public static void Log(object msg) {
Debug.Log(msg);
}

public static void LogWarning(object msg) {
Debug.LogWarning(msg);
}

public static void LogError(object msg) {
Debug.LogError(msg);
}
}

これで、ビルドするときの設定の「Development Build」のチェックありなしで
実機でログが出るか出ないかの制御ができます。
こいつですね。

チェックありだと実機でログが出てチェックなしだと出ない感じです。
エディタ実行だと常に出ます。

#ifで囲ったり、[Conditional("UNITY_EDITOR")]使う方法もありますけど、
エディタのみでのログ出力になるんですよね。
実機でログを確認したい場合もありますし、その辺はお好みな感じですかね。

では、今週もこの辺で!
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】なんかUnityってタイトルにするのも恥ずかしい内容ですが・・・・Unity+photonで絶賛ハマり中!あ、ポケガ2がシミュレーション80位になりました!\(^o^)/ 

先週火曜あたりから日曜日まで胃腸炎で苦しんでいました。
毎年夏になると胃腸炎になります。坂内です。

ようやく今朝になって米を食べました。
またお腹痛くなったらどうしようかとビビってます。


さて、ポケガ2こと~魔王を狩るモノ~ですが、シミュレーションで80位になってます!

やったね!!
また、人気急上昇でも3番目(1ページ目)にランキング!
これで、ユーザ増えてくれるとうれしいのですが・・・

あ、もちろんAndroidのほうですがね。

さて、Unityの話題でも。
Photonを使っていて、ラグに凄いハマってます・・・・
①AがBに弾を撃つ
②Bに弾が当たると、弾が消えてヒットエフェクトを出すし、BのHPを減らす。
これが、A側の画面の動きとします。

B側では次のような挙動になったりするんです。
①’AがBに弾を撃つ
②’Bに当たるも、HPが減る前に弾が消えてHPが減らない。

これって、Aの方で弾が消えるって処理が走ってBの方でも弾が消えているんですが、ラグのためにBの座標の手前できえちゃってるんですかねぇ?え?何を言っているのか分からない?俺もちょっと分かってないんですけどね。
HPが減ってから弾が消えるようにすればいいのかな・・・まぁ他にもいろいろラグの影響があるんですが・・・

こういう細かいラグのせいで、A側のBのHPと、B側のBのHPに差が出て、A側だとゲームが終了しているのに、B側だとゲームが終わってないってことが起きてます。
これの対策なんとかしないと、Photonを使った対戦が完成しません…Photonさーん(もしくはPhotonのプロの方)なんかやり方おしえーてーーーー うひいいいいい!

それと、AとBが対戦しているときに、Bだけが部屋から出たときにロビーには”A対B”の部屋が2個残ってたり・・・・AもBも部屋から出たのにロビーに”A対B”の部屋が残ってて、他の人が入ろうとしてエラーで落ちたりと・・・課題は山盛り!!
これ終るのかなぁ・・・ってのが最近の感想です。

某ポップ会(個人開発者同士が開発中アプリ見せあってあーだこーだとワイワイする会)でもワイワイと対戦してくれている姿をみると、このゲームは絶対に完成させたいし・・・・なんとかしていきたいと思います!

今までずっと2Dで、なおかつUIばっかりのゲーム作ってたので、当たり判定だのなんだのってあんまりやってなかったけど、要勉強って感じですね!

他にもハルシオンでは2-3本のカジュアルも絶賛開発中です!お楽しみに!ってことで、提供できるような技術ネタないですが、今日はこの辺で。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Unity5.4で増えたPlayerSettingsのOthreSettingsにあるLoggingが気になった 

こんにちは。
大坂です。

起きたら台風なくなってました。
雨はもう降らない感じなんですかね。

さてはて今週もブログを書いていきます。
Unity5.4になってPlayerSettingsのOthreSettingsの下のほうにLoggingの項目が増えててなんだろうと思ってみてました。
こんなやつです。

Noneにしたらログが出ないのかなーっと思ったりしたんですがそういうのではなんですね。
スタックトレースの範囲を決めるやつみたいです。

Debug.Logでそれぞれの試したのがこんな感じです。
None:


ScriptOnly:


Full:


なんか増えてたのでこんな機能だったんだというだけなんですけどね。

何かの役に立てばいいですね!
では今週もこの辺でノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Unity5.4でついにAndroidでもIL2CPPが対応!これで早くなるのかな!? 

こんにちは。坂内っす。

Unity5.4がでて、AndroidでもScriptBackendに「IL2CPP」が選択できるようになりました。

ってことで、試したところエラーがでてビルドができません。

エラー内容としては以下の通り。

UnityException: Unable to detect NDK version, please pick a different folder.

NDK??
NDK必要なの?

今まではNDK使用していなかったので、こんな感じになっています。
NDKは指定していませんでした。


ってことで、NDKをダウンロード解凍して設定したところ、無事にコンパイルが通りました。

ただ・・・なんかビルドに時間がかかったような…
まぁ気のせいってことで。

今までAndroid側のコンパイルにはmono2xが使われていたのですが、これからはAndroidでもIL2CPPが使われていきそうですね。
IL2CPPはmono2xと比べると、30-50%くらいプログラムの処理速度が速いらしいです!!!

今までUnity x Androidが重いといわれていたのが、少しでも解消されるといいですよね!
Unity5.4ではアプリの起動速度も速くなったらしいです。

どんどん良くなっていくUnityから目が離せない!!

ではノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Unity用Admob入れたときのメモ。 

こんにちは。
大坂です。

9月になりましたね!
もう9月ですorz
まだまだ暑そうですが頑張って生きていきます。

さて先日作ってるアプリにAdmob入れようとした時のメモですね。
1から入れるのは久々だったので…orz
ちなみにAndroidしか試してません。
iOSはそのうちやって何か困るところがあれば書きます。

まずはここからUnityPluginをダウンロード
https://developers.google.com/mobile-ads-sdk/docs/games?hl=ja

ボタンを押すとGitのページに行くのでGoogleMobileAds.unitypackageをダウンロードして、対象プロジェクトにImport。

AssetsメニューにGooglePlayServicesというメニューが増えているのでそこのResolveClientJarsを選択。
Plugins-Androidフォルダの下にファイルが追加されます。


で、最初のURLの下のほうに実装方法もあるのでその辺のコードを使って表示させてあげれば行けます。
一応使ったコードはこんな感じ。バナーだけ。
using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class AdmobManager : MonoBehaviour {

public string Android_Banner;
public string ios_Banner;

// Use this for initialization
void Awake() {
ShowBanner();
}

public void ShowBanner() {
#if UNITY_ANDROID
string adUnitId = Android_Banner;
#elif UNITY_IPHONE
string adUnitId = ios_Banner;
#else
string adUnitId = "unexpected_platform";
#endif
BannerView banner = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);
AdRequest request = new AdRequest.Builder().Build();
banner.LoadAd(request);
}
}

IDはAdmobに広告枠を作って指定して、実機に転送。
って感じなのですが、先日はここでエラーが出ました…。

stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqc;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqd;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqd$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqe;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqf;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqf$zza;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqg;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqh;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzqh$zza;

なんか2重にあるっぽい感じですね。
いろいろ調べたら、追加されたjarファイルの中の下の画像で選択しているやつのSelect platforms for pluginのAndroidのチェックを外してあげればいいということでチェックを外してApplyボタンを押して再度転送。
 

これで通って無事表示されますね!
ちなみにID作ってすぐだと表示されなかったので実機転送がうまくいって広告が表示されなかったら
ちょっと待ってみたりするといいかもしれません。

はい、以上ですよ!
大体自分用ですが、何かの役に立てばいいですね!

ではまた来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0