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やらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Unity】Content Size Fitterを最近知りました。 

こんにちは。
大坂です。

世の中はGWとかなんですかね。
お出かけする人たちは気を付けていってらっしゃいませ。

さて、今週もネタがなくてどうしようかという感じですが、適当に(ぇ
Unityでスクロールとか作るときに便利なやつの紹介。
みんな知ってそうですが、気にせず行きます・・・!

スクロールとか作るときに「Grid Layout Group」とか使って縦とか横に並べることが多いと思いますが、
高さとか計算して合わせるのが意外とめんどいっすよね。
今回は縦並びの例としてこんな感じですね。


このままの設定だとこんな感じになっちゃいますね。

なんか赤枠のところにボタンが置かれているような感じになりますね。
この部分がスクロールできないので、見えなくなります。
今回はボタンを10個置いてるので「Height」を「780」とかに設定すれば、
下までちゃんとスクロールできるようにはなりますが、
毎度毎度設定したり、可変にしたい時なんかは面倒なので、
「Grid Layout Group」のついているオブジェクトに「Content Size Fitter」を付けてあげます。


つけたら今回は高さを合わせたいので「Vertical Fit」を「Preferred Size」を選択してあげます。


そうするとこんな感じになって、「Heigth」のところが非活性になり、自動でサイズが決まってくれます。


ちゃんと10個が縦に並んでるように見えますね。


可変のところでも使えるので、並べるのが楽になりますかね。
では今週もこの辺で!
また来週ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】アニメーション中に他のメソッドを呼ぶ方法?yieldつかっちゃえよ。いやいや、もっと楽な方法あるんすよ!え?しってる? 

なんか今日暑いっすね。坂内っす。
今日30度とかいってる場所あるらしいっすよ。
夏が近づいてる感じがビンビンしますな。

アニメーション中に他のメソッドを呼ぶ方法。

もちろん、アニメーションスタートのタイミングで、yieldやInvoke等で、時間指定してもいいですよね。

あらかじめAnimatorにてTriggerを用意しておくとすると。

private void ActionSwing(){
~~
animator.SetTrigger("AAAA");
yield return new WaitForSeconds(1f);
SoundManager.instance.PlaySE(SoundManager.SE.Swing);
~~
}

って感じです。
まぁ、この方法だとアニメーションの特定のタイミングに時間を合わせるのが大変(めんどう)なので、もう一つの方法を。

Animationの中でメソッドを呼ぶことができます。


private void ActionSwing(){
~~
animator.SetTrigger("AAAA");
yield return new WaitForSeconds(1f);
~~
}

public void SoundSwing(){
SoundManager.instance.PlaySE(SoundManager.SE.Swing);
}

とコードでは書いておいて



Animationウィンドウの「ここ」って書いてるあたりを右クリックをして「Add Animation Event」を選択します。
そうすると、こんなウィンドウがでるので、ここでメソッドを選択。



もちろん、このアニメーションがついているオブジェクトに、呼びたいメソッドが入っているスクリプトをつける必要があります。

こうすることで、アニメーションの好きなタイミングで他のメソッドを呼べますよ!ヤッタネ!

ということで、これなんて言うんです?アニメーションイベント?の使い方でした!

アデュ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

ポケガアップデートでリジェクトとか。 

お疲れ様です。
大坂です。

特に何もネタがないですorz
あ、今週火曜日にポケガの着せ替えシステムを導入したアップデートがリジェクトされました。
着せ替えシステムには触れられず、シリアルコードのところでリジェクトです・・・。
最初のバージョンから入ってるYO!!!
とりあえず見えないようにして再申請しました。
グレーなやり方ですね。
着せ替えとか楽しみにしてた方々すみません。今しばらくお待ちください><

あと、Unity4.6とUnity5のiOS本番用ipaファイルのサイズの比較してみました。
やったのは空のプロジェクトなんですけどね。
Unity4.6.2:33.1MB
Unity5.0.0:25.4MB
差は7.7MBですね。結構違いますね。
次のアプリからはUnity5で制作していきますか。

それから、今日、これに参加してきます。
【無料アプリセミナー】今さら聞けない!アプリビジネスのいろは ~企画、申請、収益化、分析、運用~
アプリのグローバル展開の方法と成功事例で面白い話を聞けるといいかなと思ってます。

何も得るものがない記事ですみませんorz
今週はこれにて。
また来週ノシ

Category: その他日記

tb 0 : cm 0   

【Unity】ジョイスティックをね、Unityにね、いれてみたんだよね。意外と簡単だったので、みんなも試してみて!え?ジョイスティックなんていらない? 

コンニチハ バンナイDeath!

今回は遊びでAssetを落としたので、そいつの使い方なんぞを。

Unityで、バーチャルコントローラがほしかったんですよ。
次作るゲームに使おうかなーって思ってまして。(え?遊びじゃないじゃん)

んで、AssetStoreにて無料のバーチャルコントローラ見つけたので、落としてみました。

落としたのは、こちら↓↓↓↓


「CN Controls」ってやつです。

こいつをインストールすると以下のようなフォルダができます。


で、使い方ですが簡単に使えちゃいます。

今回はジョイスティックを作成してみます。
「GameObject」⇒「Create Other」⇒「CNControls」⇒「JoyStick」


そうすると、こんな感じのオブジェクトが生成されます。

このオブジェクトの構成ですが、以下のようになっていて、ジョイスティック用のカメラが作られるようです。

CNControlCamera
 -CNJoystick
  -Base
  -Stick
  
これが基本的なもの。
んで、この中の「CNJoystick」の値を変えることで、ジョイスティックの大きさや、タップ範囲などがいじれるようになっていました。

このカメラの範囲と、タップ範囲(緑の枠)になっています。
この緑の枠の中をタップすると、ジョイスティックがタップした場所を中心に現れドラッグで動かす感じです。


値の説明(タブン)
●Anchor:よくわかりません(笑)
●X Axis:Xの傾きを取得する際の名前(後述)
●Y Axis:Yの傾きを取得する際の名前(後述)
●Touch Zone Size:タップが認識される範囲(緑の枠)のサイズ
●Margins:Touch Zoneの位置を指定するのに、Marginを使用するようだ
●Drag Radius:ジョイスティックを動かした際に、玉の動く範囲
●Snap to finger:ジョイスティックの初期位置を固定にするか、初めにタップした場所にするか。
         チェック⇒始めにタップした位置。
         チェックなし⇒位置固定。
●Hide on release:ジョイスティックを離した際に、画面からジョイスティックを消すか。
          チェック⇒消す
          チェックなし⇒消さない

という感じっぽいです。

んで、ジョイスティックの傾きを取る方法は以下な感じか。
	public CNAbstractController MovementJoystick;

void Update () {
Debug.Log(MovementJoystick.GetAxis("Horizontal") + " / " + MovementJoystick.GetAxis("Vertical"));
}

ここの時、GetAxisの中の文字列が先ほどの「X Axis」とかになります。
あとは、これで取得した値でキャラ動かせばいいよね!

これでアクションゲームが簡単に作れるね!(ほんとか?)

まぁ無料だし、これくらいできればいいかなって感じですね。
ジョイスティックの絵は変えればいいだけだし、使えるんじゃないでしょうか!

ってことで、ジョイスティックのAssetの話でした!アデュ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】音データの取得時に3DSoundのチェック外したよ。 

こんにちは。
大坂です。

昨日は午後から打ち合わせでそのまま日が変わるまで家に帰らなかったので、
すっかりブログの更新忘れてました(言い訳)

1日遅れで、しかもすごく短いネタですよ!
以前ネットワーク越しでデータを取得するネタを書いていましたが、
音データも容量が多いので新しい音のデータはネットワーク越しでデータを取得するようにしてみました。
ローカルに保存する方法は、上のネタと一緒の方法ですね。

で、ローカルからデータとして使うときに、

www.audioClip

で取得してみたのですが、3DSoundにチェックが入って鳴らしても聞こえない感じだったので、

www.GetAudioClip(false);

を使って取得したら3DSoundのチェックが外せましたね!

あ、あと以前の記事でiOS試してないと書いてましたが無事動作しています。
ただ、審査が通っていないので、この方法で大丈夫なのかはまだわかりません。
一応バックアップ対象とならないように
#if UNITY_IPHONE		
  iPhone.SetNoBackupFlag(ファイル名かファイルパス);
#endif
とかってやると大丈夫的なのを見たので、入れてみて審査に出してます。
これで通ればいいんですけどね~。
あとはテストでは大丈夫でしたが、ダウンロードのところで変なエラーが出なければいいですが。
審査とか結果がわかったらまた書きます!

では今週もこの辺でノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ポケガネタ】まだまだ引きずるポケガネタ。ほんとあんまりコーディングしてなくて技術ネタ無くてすんまそんorz テヘ 

はい、こんにちは。坂内でございます。
今日は雨ですね。今日はというか、最近ずっと雨ですね。
雨 雨 雨 雨
まるで弊社の涙を具現化しているようです。

先日ポケットガールiOS版でアレやりまして、おかげ様で以下までランキングが上がりました。
(アレの件数知りたい方は、別途TwitterのDM等でお聞き下さいませ。)
【総合無料】 14位
【ゲーム総合】 8位
【アドベンチャー トップiPhone】 2位
【シミュレーション トップiPhone】 4位

すごいっすね。
いやー すごい。

でも二日もたったらガクッと落ちて、現在は以下の感じ。
【総合無料】 182位
【ゲーム総合】 80位
【アドベンチャー トップiPhone】 16位
【シミュレーション トップiPhone】 17位

ポケガの地力が無いということでしょうかね。
しかし、この2日でレビュー数500-700ついて、平均点4.7くらいだったので、悪くは無いはずなんですがねぇ・・・
何がいけないんでしょうか?
自分なりの考察を書いておきます。
①話題性がない
②話題性がない
③話題性がない
④分からない

ということですね。
話題性がないので、一般のユーザには浸透していないってのがありますよね。
あと、データ量が100M近いので、「うわっ でかっ やめた」ってのがありそうです。
とりあえず、アレの費用回収までは1ヵ月~2ヵ月かかりそうな感じですね。
それと、次回バージョンアップにて着せ替えを入れるという話があったと思いますが、現在審査中ですのでお待ちくださいませ。
その後もボイスのバージョンアップもあるので、お楽しみあれ。

ちなみにポケガ2はシナリオにも力を入れて、ストーリーも楽しめる方向でやっていこうと思います。
また話題性のないものになると思いますが、話題性やネタとかではなく、ゲームとしてやっていて面白いと思ってもらえるようなものを地道に作っていきます!

話題変わりますが、今日明日Unite2015っすね!
ちょー楽しそうです!!
行きたかった!!

ってことで、今日もちょっと技術ネタないっす。すんまそん。
次回はちょっと技術ネタ考えてきます!

では、アデュ~ノシ

Category: その他日記

tb 0 : cm 2   

【Unity】コルーチンのメモ的な感じ 

こんにちは。
大坂です。

ここ数日冬のように寒いです・・・。
昨日雪とか降ってましたしね。もうどういうことなんでしょうか・・・。

さて、最近ちょっと便利だと思ったコルーチンの使い方。
使った部分だけなので、少ないですが・・・。
コルーチンは簡単に描くとこんなやつですね。
void Start() {
 // コルーチンを呼び出す
 StartCoroutine("Hogehoge");
}
// コルーチン
IEnumerator Hogehoge() {
 ・・・処理
 // 1秒待つ
 yield return new WaitForSeconds(1f);
 ・・・処理
}
処理の間に待ち時間入れられる感じですね。
結構便利です。

ここから最近知った使い方、2個です。
1個目
呼び出した処理が終わるまで待つようにする。
void Start() {
 StartCoroutine("Hogehoge");
}
IEnumerator Hogehoge() {
 for(int i = 0; i < 10; i++) {
  // Hogehoge_2の処理が終わるまで待つ
  yield return StartCoroutine("Hogehoge_2");
 }
}
IEnumerator Hogehoge_2() {
 ・・・処理
 yield return new WaitForSeconds(1f);
 ・・・処理
}
訳あって、ループの中でコルーチンを呼び出していたのですが、
バンバンコルーチンが呼び出されてちょっと困ったことになったので、
上のようにすると、Hogehoge_2の処理が終わったら次のループに行きますね。

2個目
コルーチンを呼び出すときに複数引数の指定。
void Start() {
 StartCoroutine(Hogehoge(1,2));
}

IEnumerator Hogehoge(int i, int j) {
 ・・・処理
 yield return new WaitForSeconds(1f);
 ・・・処理
}
これできたんですね・・・。知らなかったのです。

とまぁ、知らないことがまだまだいっぱいあるので、いろいろ覚えないといけないですね!

では今週もこの辺でノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】ポケットガール2そろそろ作り始めようかなーの前に、iTweenについてのメモかいとこ 

こんにちは、坂内でございます。

ポケットガールの着せ替えシステム・ログインボーナスシステムの開発も後半に入りました。
再来週あたりにはリリースされるかもしれません!

ところでみなさんiTween使ってますか?
はい、とても使ってます。

キャラの動作をiTween使って行い、特定のタイミングでキャラを止めたい時には皆さんどうしてますか?
以前にiTweenを止めて、一定時間分Invokeを使って止めていたんですが、その時に問題が起きたのでちょっとメモしておきます。

一定時間止める処理としてはInvokeで空白の時間作ることで問題はないのですが、途中で動かそうと思った時にうまくいきません。

Invokeにて止めている間にiTweenでキャラの移動をすると、移動している途中でInvokeが有効になって違う行動を行う・・・という感じの問題が起きました。

あ、Invokeって特定時間後に引数のメソッドを実行するって感じなんですが。
Invoke("SetTimer",3f);
ってやると、「3秒後にSetTimerメソッドを呼ぶ」って感じです。

なので、次のように対処しました。

HashTable hash = new HashTable();
hash.Add("x",動かすオブジェクト.transform.localPosition.x);
hash.Add("y",動かすオブジェクト.transform.localPosition.y);
hash.Add("time",3f);
iTween.MoveTo(動かすオブジェクト,hash);


ってやったんですよ。
これだと一応場所は動いていませんが、iTweenで動いているためiTween.Stop(動かすオブジェクト)によって、いつでも止めることができます。
こんな方法でやってますが、もっといい方法あればいいんだけどね!

では、アデュ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Unity5対応続き。そして一旦停止。 

こんにちは。
大坂です。

暖かくなったと思ったら微妙に寒い日もあるなか、皆様体調にはお気を付けくださいませ。

iOS版ポケガのUnity5対応についてですね。
結論から言うとちゃんとアプリは起動できました。
が、一旦対応はやめました。
まぁ順を追って書いていきます。

先週、アプリ起動時に

return [_displayConnection objectForKey:(UIScreen*)key];
って行でエラーですね・・・。

って書いてましたが・・・。
そもそもこれが出るのが、ARCのエラーで以下をNoにすると出る。


で、DisplayManager.mmの277行目を
_displayConnection = [[NSMapTable
mapTableWithKeyOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
valueOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
] retain];

にしたらいけるよっていうのあったので変更して、実機で起動すると・・・。
Unityのスプラッシュが無事出てきて、アプリが起動したなーっと思って、名前決める画面で、InputFieldをタップ・・・

アプリが落ちましたorz

ふむむ・・・。
色々調べてる時に以下の画面で、個々に「-fno-objc-arc」って書くとARC系のエラーが対応できるという話が。


ということでとりあえず1個ずつ・・・広告会社さんのスクリプトにつけまくらないといけないっすね…。
そんな感じで、エラーが出たスクリプト1個1個に「-fno-objc-arc」をつけて、
DisplayManager.mmも元に戻して、実行すると。
起動もうまくいって、名前も入力できました。
が、しかし!
広告会社さんのスクリプトで落ちました…。
うーん。
色々Unity5対応が始まってくれないと厳しそうです。
そのままでも大丈夫な広告会社さんもあったので、まぁ使うところ絞れば行けるんですけど。
現状は4.6を使うという方向にしました。

とりあえずUnity5でアプリを起動できるまではこんな感じでした!
全て解決できてないので何とも言えませんが、何かのお役に立てばと!

では、また来週ですノシ

Category: 開発日記(Unity)

tb 0 : cm 0