C#のコードフォーマットをastyleでやったときのメモ

Posted on 2018年03月06日(火) in articles • Tagged with Unity, C#

astyleを使用してcodeformatを行う. http://astyle.sourceforge.net/

インストールはHomebrew経由でできた

brew install astyle

以下のようにすれば指定したディレクトリ以下のcsファイルに対してフォーマットがかけられる.

# findとgrepでフォーマットかけたいファイルを抽出.
# xargsで引数としてastyleを実行.
find Assets -type f | grep  \.cs$ | xargs -I@ astyle --options=.astyleoption @

オプションファイルの中身は以下の通り.:

# c#のファイルとして認識する
mode=cs
# allmanスタイルにする
style=allman
# インデントにタブを使う
indent=tab=4
# 継続行のインデントにもタブを使う(但し偶数個のタブでないときはwhite spaceで埋められる)
indent=force-tab=4
# namespace文の中をインデントする
indent-namespaces
# switch文の中をインデントする
indent-switches
# case文の中をインデントする
indent-cases
# 1行ブロックを許可する
keep-one-line-blocks
# 1行文を許可する ...

Continue reading

Very Simple Ads Monetization & Mediationに細かな修正を加える

Posted on 2017年10月19日(木) in unity • Tagged with Unity, Android, iOS, admob, adcolony

動画広告を表示するのにVery Simple AdsというAssetを購入し、使用している.

https://www.assetstore.unity3d.com/jp/#!/content/57517

基本的にこれを入れてやればいいが、以下の2点の対応のために修正を加えた.

  1. adcolonyの動画広告視聴前後に、ダイアログが表示される
  2. admobの動画広告視聴完了時に、エラーが頻発する

ので、以下の対応を行った。

  1. AAAdcolonyの200行目くらいの箇所を以下のように修正する
AdColony.AdOptions adOptions = new AdColony.AdOptions ();
// 以下2つをfalseに変更
adOptions.ShowPrePopup = false;
adOptions.ShowPostPopup = false;
  1. Admobのエラー回避

https://github.com/googleads/googleads-mobile-unity/issues/509

↑のissueと同様に、OnAdRewardが呼ばれた直後にOnAdCloseが呼ばれていた.

そのため、OnAdRewardが呼ばれたらflagを立てて、OnAdCloseが呼ばれても大丈夫なように対応した.


Continue reading

Anti-Cheat ToolkitのTimecheatingDetectorがIPV6で動作しない

Posted on 2017年09月27日(水) in unity • Tagged with Unity, iOS

versionは1.5.6.1.

ipv6環境ではErrorダイアログが出続ける. TimeCheatingDetector.csの以下の部分を変更する.

// 元々
    // var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
// 変更後
    var socket = new Socket(addresses[0].AddressFamily, SocketType.Dgram, ProtocolType.Udp);

IPV6のテスト方法は以下を参照.

http://qiita.com/yonell/items/16c08e541b4a2b84b0a3


Continue reading

msgpack-cliでcustom serializationをする

Posted on 2017年09月13日(水) in unity • Tagged with Unity, Android, iOS, msgpack

何かEnumをSerializeするときにErrorが起きたので以下のように対応した.

これが正しい対応かどうかはかなり怪しいが一旦はこれで対応していく.

以下を参照し、作成した.

https://github.com/msgpack/msgpack-cli/wiki/Custom-serialization

  1. CustomSerializationを作る
public class TargetTypeSerializer : MessagePackSerializer<TargetType>
{

    protected TargetTypeSerializer (SerializationContext ownerContext) : base (ownerContext)
    {
    }

    #region implemented abstract members of MessagePackSerializer

    protected override void PackToCore (MsgPack.Packer packer, TargetType objectTree)
    {
        packer.Pack ((int)objectTree);
    }

    protected override TargetType UnpackFromCore (MsgPack.Unpacker unpacker)
    {
        var ...

Continue reading

Unity Cloud BuildでFirebaseSDKを組み込んだアプリをビルドする

Posted on 2017年08月07日(月) in unity • Tagged with Unity, Android, iOS

FirebaseのiOS版はcocoapodsを使用して各Framework等をインストールしている.

ただ残念なことにUnity Cloud Buildはcocoapodsに対応していない(マジかよ...

なので、自分で依存FrameworkをPlugins/iOS以下に入れる必要がある.

以下のブログを参考にしたが、FirebaseのドキュメントにリンクされているSDKが3.16で、最新版が4.0.4だったので自分で対応することにした.

以下の記事を参考にしながら対応していきました!

http://blog.livedoor.jp/abars/archives/52394874.html

環境

自分の環境は以下

  • Unity5.6.1p3
  • Xcode8.3.3

対応手順

  1. 自分のローカルPCにcocoapodsを入れる

  2. Unity Firebaseを入れたUnity Projectでiosをビルドする

  3. 出力したProjectのPods以下をplugins/iosにコピーする.(自分はPlugins/iOS/FireaseDependenciesにコピーした)

    コピーするのは以下の画像の選択されているもの.

screenshot
  1. 配置したProtobuf以下のファイルのcompile flagsに以下を設定する
-fno-objc-arc -fobjc-exceptions

※ objc-exceptionsに関してはこれで正しいかはよくわかってないです。

  1. google/protobuf以下にあるimportのpathが解決できないみたいのなので以下のようにして置き換えます.

    pathは適宜書き換えて対応してください ...


Continue reading

Anti-Cheat Toolkitを使ってるとREAD_PHONE_STATEが勝手につく

Posted on 2017年08月05日(土) in unity • Tagged with Unity, Android

以下のAssetを使っているとREAD_PHONE_STATEが勝手につく.

https://www.assetstore.unity3d.com/jp/#!/content/10395

設定画面からACTK_PREVENT_READ_PHONE_STATEにチェックを入れるのを忘れないこと.

ただし、使用すると一部機能が使えなくなる.自分はつかってないから切った。


Continue reading

Error: Error while saving blame file, build will continue... というError対応

Posted on 2017年08月04日(金) in articles • Tagged with Unity, Android

Unity5.6.1p3でFirebase-SDKを入れてビルドしようとしたとき以下のようなErrorに遭遇した

Error: Error while saving blame file, build will continue
Error: ???????????????"uses-sdk"????????????????????????????????????"tools:overrideLibrary"????????????"tools"???????????????????????????????????????

Console上でも文字化けされていたので、貼り付けミスということではない

解決は以下のURLにある通り、mainのmanifestにxmlns:tools="http://schemas.android.com/tools"を追加した.

https://groups.google.com/forum/#!topic/android-group-japan/o5LeY0nIGjc


Continue reading

年末年始にやったこと

Posted on 2017年01月04日(水) in 2017 • Tagged with diary, python, Unity

年末年始休みにやったことを軽くまとめる。

RecycledScrollViewの作成

UnityのScrollRectは中のアイテム全てGameObjectとして保持しているので、 ソシャゲのScrollするListみたいなやつで10000件とかやると表示領域に5件くらいしかなくてもくっそ重くなります。 また10000件とかだとInstantiateに時間がかかります。

なので、データは10000件でも表示領域分しかInstantiateしないScrollViewを作成しました。

ScrollRectのOnValueChangeでscroll位置を取得して、内部的に表示位置を計算しています。

次回のゲーム内で使用する予定.

django-rest-frameworkでAPIの作成

主にこっちばっかりやってました。

次回はサーバーを使用するのでpython/djangoでAPIを作る予定. プラス前からやりたかったrest frameworkを導入してみました。

rest_frameworkの概念を理解するのに戸惑ってしまい、かなりストレスが溜まりましたが、 慣れれば簡単にapiが作れるし、testも書きやすいのでありがたい限り。

久しぶりのpythonでちょっとうれしいです。

やっぱりpythonは個人的に触ってて楽しい。ただLL言語の型がない感じはちょっとつらい。

とくにlibrary側のmethodのargumentsに関する情報がないと本当に困る。 args: request -> このrequestってどう扱うんだよ。。。というのが頻発しています。

mypyあたりが早く普及してくれえばええのに。。。

とりあえず、明日からはお仕事。

お仕事しながらちゃんと開発できるように頑張りたいです。


Continue reading