Play! scala でテンプレートごとに読み込むcssを変える方法
ページごとに読み込むcssを変えたい場合どうしたらいいのかわからなかったのでメモ
とりあえずとった方法は
main.scala.htmlにて
一番上の引数の部分を
@(title: String,assets: List[String])(content: Html)
にする
→assetsというリストを引数にとる
で
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/style.css")">
とかかいてあるところのすぐ下に
@assets.map { asset => <link rel="stylesheet" media="screen" href="@routes.Assets.at(asset)"> }
って書く。
つまり配列でmain.scala.htmlにそのテンプレートで使いたいファイルを渡してあげる
んで、各viewのテンプレートhoge.scala.htmlのmainを呼び出す箇所にて呼びたいcssを記述してあげる
@main("Welcome to Play",List("stylesheets/login.css","stylesheets/hoge.css")) { //中身 }
みたいな!!!
とりあえずリストでmain.scala.htmlにファイル名だけ渡してループさせているのですが、
もっとちゃんとしたやり方があればご教授ください。。。
play! scala でiosのpush通知を実装する
play! scalaでapnsを通してiosデバイスにpush通知を実装しまする
ということで証明書関係やとりあえずphpで通知するまでの手順は
iOSでプッシュ通知を実装する方法の超詳細まとめ(前編) | Lancork
ここがめっちゃ詳しかったのでここでやりました。
で、どうやってscalaに書き換えるのかというところから。
下準備
先ほどのリンクで取得した
・Apple Production IOS Push Services
・Entrust.net Certification Authority (2048)
の二つのファイルを一つのp12ファイルにします
やり方はキーチェーンで2つの項目を選択した状態から右クリックで「2個を
書き出す」でひとつのp12ファイルにすることができます。
中身
んで、build.sbtファイルに
"com.notnoop.apns"%"apns"%"0.1.6"
との記述をする
そしたらあとはもう簡単
プッシュ通知を実装したい箇所で
//さっき作ったファイルのパス val APNSCertPath = "/path/to/sakki/tukutta/p12/file" //さっきつくったファイルのパスワード val APNSCertPassword = "password" //APNSオブジェクト生成 val service = APNS.newService .withCert(APNSCertPath, APNSCertPassword).withSandboxDestination.build //プッシュ通知内容詳細 val payload = APNS.newPayload.alertBody("pushpushpush!!!doyaaaaaa").badge(1).sound("default").customField("name", "neel").build //デバイストークン val token = "<<<<<<<<<<<<<<<<<<<<<<Device Token kaitene>>>>>>>>>>>>>>>>>>>>>>" val notif = service.push(token, payload)
最後に、APNSのライブラリをちゃんとインポートするのを忘れずに!
import com.notnoop.apns.APNS; import com.notnoop.apns.ApnsService;
ああとちゃんと依存性のやつをインストールするのも忘れずに!
Unity メモリのせいでアプリがクラッシュした時の対応
シーン移動時にメモリがなくなっておちたよというxcodeの表示とともにアプリがクラッシュ
いろいろ調べた結果、シーン遷移前のシーンでのメモリ消費が激しすぎて新しいシーンを読み込むとメモリがオーバーするという現象に陥ってる模様
→読み込める時と読み込めない時があり、読み込める時は前のシーンのオブジェクトが少なかったことから考察
Unity側が全部勝手に勝手にやってくれるとの記述を信じていたがそうでもない(勉強不足なだけ?)ので、どうしてもメモリのせいでアプリが落ちてしまう場合はシーン間にクッションのシーンを置けば解決できるのではという解決方法
つまり、
シーンA(メモリ消費大)→シーンB
でアプリが落ちていたのにたいして
シーンC(メモリ消費小)→シーンB
では落ちていなかった。このことから間にメモリの消費が少ないシーンを間にはさむ↓
シーンA(メモリ消費大)→クッションシーン→シーンB
ことでいけるのではという仮説
結論としてはクラッシュせずに読み込めたが、シーンを読み込む時間が長くなってしまった。
アセットストアから購入するのではなく、アプリに最適化されたアセットが欲しい、、、
unity ゲームオブジェクトをFindできないときの注意
GameObject.Find("hoge")
ってやるときにFind("")はダブルクオーテーションじゃないといけないらしい
理由はよくわからない
シングルクオーテーションにしたらエラーがでたので、Findするときにエラーがでたらシングルクオーテーションになってないか確認する
unity NGUIのUIButtonをdisabledにする
GameObject名.GetComponent<UIButton>().isEnabled = false;
これでdisabledになるのでボタンを押したら色をかえたい時などは便利
こんな簡単なのでもC#のプロパティをうまく使いこなせてなくてちょっと詰まった