uGUIのタップ長押し

 ボタンを長押しすることで処理を変える、というのはよくあると思う。いろいろ探していたら以下のようなものを作ってらっしゃる方がいたので利用させていただいた。

UGuiLongPress
https://gist.github.com/WestHillApps/03e1d7a85856621c478b

 以下のUnityEventが宣言されているのでこれに

長押しした場合のイベントをアタッチする。ちなみに単タップのイベントも用意してある。

 あと長押しする時間帯、単タップとの差時間とかを設定する項目?があるが、自分はlongPressed=0.6に設定。差時間はdeff=3。

 この設定は作ってるアプリによっていろいろ違うだろうから、自分で実験するしかないだろう。

子ノードを一旦全て削除

 自分のノード内にある子オブジェクトを全部削除したいときに使う。

 スクロールパネル内にあるオブジェクトを全部消すときとか。一気にデストロイする、かっこいい響きねデストロイて。

//子ノードを一旦全て削除
foreach (Transform n in transform)
{
    Destroy(n.gameObject);
}

Unityのアセット買わずに自前でなんとかする人はマゾじゃなかろうか

 なんていうか、なんか「全部自分で把握」しないと気がすまんぜ的な人いるよね。アセット買わない人いるの、自前で全部やろうとする人。勉強のためにやってるならまだわかるんだけど。あれどういう精神状態なんだろ。マゾとしか思えん。


 悪いことは言わぬ。1000円、3000円くらいのアセットなら迷わず買って使え。そんで、そのアセットのコードを見て理解した方がいい。というかアセット使わない変態縛りする人は、もう最初からUnity使うんじゃない。

 Java、Swift使ってUnity使わずゼロベースからやっとけ。

SimpleSQL使ってるときの最新のDBファイルどこにあるのか問題(Mac編)

 SimpleSQLにおいてDBは「*.bytes」というファイルがDBのデータらしい。なんというか、このファイルにいろんなテーブルデータが入ってるみたい。

 このDBデータ(以下、test.bytesと呼ぶ)test.bytesは、最初は「DB Browser for SQLite」ソフトを使って作ることになる。適当にテーブル作ってtest.bytesファイルを出力、それをUnity上で使用することになる。

 ただ、Unity上に置いたtest.bytesファイルが常に更新されていくわけではないので注意。アプリ内でテーブルに対してデータのinsertやupdateなんかをしたとしても、Unity上のtest.bytesファイルは新しくならん。これを読むのは最初の最初だけのようだ。

 じゃあ、更新しまくられている最新のファイルはどこにあるのかというと、自分のMacだと以下の場所にあった。

 場所はここ(たぶんユーザーごと、それぞれで変わるべ)

Macintosh HD⁩ ▸ ⁨ユーザ⁩ ▸ ⁨<なんか自分の名前> ▸ ⁨ライブラリ⁩ ▸ ⁨Application Support⁩ ▸ ⁨DefaultCompany⁩ ▸ <なんかアプリの名前> ▸ test.bytes

 ここにおいてある「test.bytes」ファイルを「DB Browser for SQLite」とかのDB管理ソフトで読み込むと最新のテーブル情報が見れます。これを更新表示しつつ、アプリを作っていくといろいろ便利でよか。

 ちなみにアプリキャッシュクリアとかすると、ここのファイル消える。そんでまたゼロから新たに始めるため、Unity上においた「test.bytes」を読込する。こわーい。クリアこわーい。

 つまり、ユーザーがアプリキャッシュクリアしたら消えるというわけよ。

UnityでSQLite使うときはもう、アセットのSimpleSQL買っとけ

 無料のアセットとかあるけどさぁ、いろいろやったけどさぁ。SimpleSQLいちばん。


  4000円出して、SimpleSQL買っとけ。便利だし安定してるし4000円以上の価値ある。
 1から組むとかやめとけ、時間もったいねぇ。SQLマニアというのなら止めん。

SimpleSQL
https://assetstore.unity.com/packages/tools/integration/simplesql-38

SimpleSQL

UnityでSQLを利用するときはDB Browser for SQLite使っとけ

 UnityでSQLを利用したい。ちょっと大きめのプログラムになるとデータを管理するSQLをすぐ導入したほうがいい。

 最初はめんどくさいけど、やっぱりSQL入れた方がいい。SQLiteのことね。サーバーで動作する奴じゃなくて、アプリ内のみで動くスタンドアロン的なSQLね。SQLiteね。その管理DB用のPGはいろいろ使って見たんだけど以下が一番良かった。

DB Browser for SQLite
https://sqlitebrowser.org/

DB Browser for SQLite

シンプルだし使いやすかった。

GridView、グリッドビューに入れた画像が綺麗にならない、バラバラになる

みんな大好きグリッドビュー。

こうやって使いまっさ。ImageAdapterは独自のもの。そこに、context imageUrlListを渡します。

しかし、GridView、文字をいれるだけだと楽勝であるのだが、ネットから画像をよみこんでいれるとなるときっついのだ。それぞれの大きさがバラバラになったりして泣きそうになるのだ。他のサイトではすごく簡単にやり遂げているが。

ここで、

// 画像のサイズをここで固定
imageView.setMinimumWidth(300);
imageView.setMinimumHeight(200);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

これが必要だった。setScaleTypeはおこのみで。

クリックイベントにも注目。

setUrlを使ってurlをイベントリスナー内に入れ込んでいる。イベントに値を渡す方法。少し凝ったことをしたいなら必要になってくるだろう。

BASIC認証は使わないだろうからはずしてもいいじゃろう。

Activity、Intentのことについて(いろんなオプション)

こちらを参考にして、
intent.setFlagsメソッドの引数について

画面を遷移するときなどにこれを渡せばいいらしい。使い方は以下のような、

あとタスクに関係するのであればマニフェストの、

android:launchMode=”singleTask”

なども考慮するといいかもしれない。

また一つ賢くなったね!!

アラートダイアログの外側を押せないようにする

アラートダイアログの外側を押せないようにする、ダイアログは便利ですが外側を押しても反応しちゃう。

そこで

こんな感じで、アラートダイアログを宣言して

こうすればいいですね。

builder.create().show(); の create() はわけわかめ。なんだろうか、こいつは。

ボタンとかを薄くするためには(透明化)

alphaを指定する。

AlphaAnimationをつかって指定。

自分的Volleyの定番コード

自分的Volleyの定番コード

CustomRequestクラスを作成して以下の文章でvolley使う。例文はPOSTを使用する場合です。

イテレーターを使わないとJSONが解析できないことに気がついた

JSONでキーがあらかじめわかっていれば、使うのは簡単だった。

でもキーがわからないときはどうすればいいのか?

以下のとおり。

下がミソじゃの

Googleスプレッドシートを利用したGASのAPIを誰でも使えるようにする

Googleスプレッドシートを利用したGASのAPIを誰でも使えるようにしたかったんだけど、なかなか難しい。

解決策として、スプレッドシート内で作成したものを公開するのではなく、

Googleドライブ上に

スクリーンショット 2016-03-09 18.11.37

みたいな感じでスクリプトファイル自体を作成できるようにして、そこで新たにスクリプトを書く。

そのスクリプトをウェブアプリケーションとして公開!とやると、簡単に行けた。

どこからでもアクセスできるAPIができました。

Googleスプレッドシートは、スマホからでも簡単に更新できるため、かなりの利用幅が効くようになると思います。

Javaでマッチング、正規表現のとき、$1 $2 とか使いたいじゃん

こうすると result に$1が入るよ。つまり、

^(.*?)(.png)$

の最初の括弧の

(.*?)

にマッチした部分がゲットできるってことね。

photoUrl = “hogehoge.png”;

だったら、

hogehoge

がとれるってことだよん。

google スプレッドシートを利用してJSONをAPIで発行

基本はJavascript。

doOutput(e)関数で吐き出すらしい。これをAPIにすると、超便利である。

まず、
var summaryData = sh.getDataRange().getValues();
がミソ。これで一度すべてのシート内容を読む。シートが巨大な時はこれをつかう。早いから。

リターンで返す時は、
return ContentService.createTextOutput(JSON.stringify(json)).setMimeType(ContentService.MimeType.JSON);
などなど。単純に文字列を返してもだめっすよ、怒られます。

数値文字列に0を加えて桁数を同じにしたい、文字列加工したい

“%1$02d”がミソ。2桁に満たない場合は0が加えられ、結果的に2桁表示にしてくれる。

1だと 01 というふうに。

“%1$04d” にすれば、

1だと 0001 というふうになる。