ラベル その他のライブラリ の投稿を表示しています。 すべての投稿を表示
ラベル その他のライブラリ の投稿を表示しています。 すべての投稿を表示

2017年4月6日木曜日

[Unity] I2 Localization その6 〜 Google Spreadsheet経由での改行入力

I2 Localizationで文章に改行コードを含める時に、少しハマったのでメモしておきます。


Google Spreadsheetからテキストをインポートしている場合、テキストに "\n" が含まれていても、uGUIのTextに表示すると、そのまま "\n" と表示されて、改行してくれません。
Google Spreadsheet経由だと "\n" は通常の文字として認識されてしまいます。

zannen.jpg
改行されない

代わりにGoogle Spreadsheetのセルの中で、Alt + Enterを押して改行するようにします。

spreadsheet.jpg
Google Spreadsheetで改行を入力した状態

そして、Google Spreadsheetから、UnityのI2 Localizationにインポートをし直すと、正しく改行されるようになります。

ok.jpg
改行された

2017年1月4日水曜日

[Unity] I2 Localization その5 〜 Google Spreadsheetとの連携

新年あけましておめでとうございます。
当ブログをご覧になって頂き、いつもありがとうございます。

少し日が開いてしまいましたが、I2 Localizationシリーズその5、今回はGoogle Spreadsheetとの連携方法について解説していきたいと思います。



ローカライズする用語が少なければ、Google Spreadsheetを使わず、これまでやってきたように I2/Resources/I2Languages.prefabに直接入力していくのが簡単でしょう。しかし用語・文章量が多くなってくると、途端に面倒になってきます。幸い、I2 LocalizationにはGoogle Spreadsheetとの連携機能があります。しかし導入方法が少し独特なので、早いうちに使い方をマスターしておくのも良いかと思います。

2016年12月4日日曜日

[Unity] I2 Localization その4 〜 C#スクリプトからローカライズ文章を取得する方法

前回から引き続き、I2 Localizationの利用について書いていきます。
今回は、スクリプトからローカライズされた文章を取得する方法です。

Term(キー)を文字列で指定する方法

前回設定した、Term(キー)を使用します。一番簡単な方法は以下のように、Term(キー)を文字列で指定する方法です。しかし、この場合はTerm(キー)のタイプミスに注意して下さい。間違っていると、ローカライズされた文章は取得できません。
// Term(キー)を文字列で指定して取得する方法。タイポに注意!
string text1 = I2.Loc.ScriptLocalization.Get("Term Name");

2016年11月28日月曜日

[Unity] I2 Localization その3 〜 ローカライズ手順

前回から引き続き、I2 Localizationの利用について書いていきます。
今回はいよいよローカライズの手順です。

Language Sourceコンポーネントを編集していきますが、
Assets \ I2 \ Localization \ Resources \ I2Languages.prefab
を直接エディットする方法をとります。詳しくは前回を参照して下さい。

この方法だと、シーンを跨いでもローカライズデータベース(Language Sourceコンポーネント)にアクセスできるので、小中規模なアプリではとても有効な手段だと思います。

ちなみに、この Assets \ I2 \ Localization \ Resources \ I2Languages.prefab は、初めてI2 Localizationをプロジェクトにインポートすると自動で生成されます。アセットをアップデートした場合は、編集済みの I2Languages.prefab ファイルを上書きしないように、上書き生成はしないようになっているそうです。(動作未確認)
まあ、上書きされたとしてもGitやSVNでバージョン管理していれば、それほど焦らなくてすむとは思いますが、念のため。

2016年11月26日土曜日

[Unity] I2 Localization その2 〜 一番大事なものLanguage Source

前回から引き続き、I2 Localizationの利用について書いていきます。

I2 Localizationでは、Language Sourceコンポーネントがローカライズのデータベースとなり、ここにローカライズする言語の種類、翻訳したデータを引き出すキー(Termと呼ぶ)、翻訳データが格納されます。

このLanguage Sourceコンポーネントの管理方法には、以下の3つが挙げられていました。
  1. Assets \ I2 \ Localization \ Resources \ I2Languages.prefabを直接エディットする。
  2. 各Scene毎にGameObjectのコンポーネントとして持つ。そうすることで、Scene毎にローカライズデータを分割できる。
  3. バンドルの一部として動的にロードする。

中でもおすすめは(1)だそうです。ResourcesフォルダにI2Languages.prefabというファイルがあると、自動的に読み込んでくれます。Sceneを越えてプロジェクト全体で、ひとつのローカライズデータを利用することができます。

自分もWorrrm Rebirth (iOS版、Android版)のローカライズには、(1)の方法をとりました。

Unityアプリのローカライズ対応 I2 Localization その1

拙作、Worrrm Rebirth(iOS版、Android版)の日本語ローカライズ作業をしました。(Androidの日本語対応版は既にリリース中です) もともと英語版だけでリリースしていたのですが、いろいろあって後回しにしていました。
ちなみに、Unityでのローカライズ作業は初めてです。

それほど高機能なものでなくていいので、自分でローカライズシステムを組んでしまおうかと思いましたが、やはり時間短縮したかったので、アセットストアに頼ることにしました。

自分が見つけられたのは2つ。I2 Localization と AutoLocalization です。
どちらを利用するか悩みました。AutoLocalizationはシンプルにまとまっているような気がして、価格も安いです。開発者が日本人の方のようなので、ネイティブでサポートを受けられる恩恵もあります。ただ一件もレビューが付いていなかったので、その点が気になります。
I2 Localizationは多機能で、比較的高価格。英語マニュアルオンリーで、使いこなせるかが心配でしたが、高評価レビューの多いのがポイント高いです。やっぱり今の時代、ユーザーレビューの重要度は高いですね。

2015年2月10日火曜日

ヘックス型ストラテジーゲームの開発に便利そうなUE4用のツールキットAdvanced Turn Based Tile Toolkit

UE4でターンベース・ストラテジーゲームを作るのに特化したAdvanced Turn Based Tile Toolkitというものが、近いうちにマーケットプレイスに登場するようです。

tunebase.jpg

2014年9月29日月曜日

LWFフレームワークをcocos2d-x v3.2に組み込む(iOS版)

LWFを既存のアプリプロジェクトに組み込んでみたので、その導入方法を書き残しておきます。

テスト環境
  • Mac OS X 10.9.5
  • Xcode 5.1.1
  • cocos2d-x v3.2

2014年4月10日木曜日

alDeleteBuffers()がAL_INVALID_OPERATIONを返して困ったら

OpenALでサウンドデータ(バッファ)を解放しようとするときには、alDeleteBuffers()を使用します。

全てのサウンド再生が終了しているのを見計らって、いざalDeleteBuffers()を実行しても、エラーコードAL_INVALID_OPERATIONで失敗してしまうというのは世界中よくやるミスのようです。

2013年5月6日月曜日

iOS版AdMob SDK 6.4.1導入、ソースファイルが.mmな人はちょっと注意

iOS版AdMob SDK 6.4.1で、c++ (.mmファイル)から GADAdSizeFromCGSize() を呼ぶとリンカエラーで出るようになってしまったので、ヘッダファイルをimportする時に自前でextern "C"で囲ってやる必要がありました。
#ifdef __cplusplus
extern "C" {
#endif

#import "GADBannerView.h"
    
#ifdef __cplusplus
}
#endif

関連記事

2013年5月2日木曜日

iOS版AdMob SDKは6.4.0以降がUDID未使用、そしてアプリバージョンアップのお知らせ

Google AdMobチームからメールを頂いて、内容はといえば、僕の使っているSDKのバージョンがUDIDを使用しているものなので、5/1以降Appleにアプリを申請する場合は、最新版に差し替えるようにとのことでした。

2012年5月11日金曜日

Automator: Retina画像をフォルダアクションで一括コンバート(3)

前回からの続きです。
前回では、Retina画像を一括コンバートするフォルダアクションを作成しました。
今回は、そのフォルダアクションを実行テストしてみます。

まずは、前回作成したフォルダに、適当なRetina画像ファイルをコピーしてみます。
僕はDaikon@2x.pngというファイルを、RetinaConvertFolderにコピーしました。

以下のような結果画面が出れば成功です。
OK以外のボタンを押しても何も起こりませんので、素直にOKを押してウィンドウを閉じて下さい。
結果画面

Automator: Retina画像をフォルダアクションで一括コンバート(2)

前回からの続きです。
前回は、フォルダアクションを作成する準備まで解説しました。
今回はいよいよフォルダアクションを作成します。

Automator起動

Automator起動

まずはAutomatorを起動して、新規フォルダアクションを作成します。

Automator: Retina画像をフォルダアクションで一括コンバート(1)

iPhoneアプリ開発でRetina画像(@2x)から、縦横半分にした非Retina画像を用意するのには、比較的手間がかかります。

1個1個の手間は大したこと無くても、ファイルが数十〜百個単位になったり、フォルダ階層が複雑になったりすると、コンバートのし忘れなど、ヒューマンエラーが問題になります。

特に、プログラム担当俺、サウンド担当俺、グラフィック担当俺、というインディーアプリ開発者にとっては、これらの作業は自動化しておきたいものです。

今回はRetina画像を、非Retina画像にコンバートするフォルダアクション作ってみます。フォルダクションとは、フォルダにファイルがコピーされると自動で起動するバッチ処理で、Mac OS X標準の機能です。

2012年4月9日月曜日

Unity: RageSplineが面白そう

2DベクターグラフィックライブラリRageSplineが、Unity Asset Storeで4/8まで$25のセール中でした。

僕はもともとFlash好きな人間なので、ベクターグラフィックでゲームやアプリを作ったりしていました。
最近の iPhone アプリ開発ではビットマップデータを使用する事が多かったので、こういうライブラリが Unity で出てきてくれると、何か作りたくなってしようがないです。


問題は、iPhone上での実行速度なのですが、こちらの方は今のところ情報を得られていないです。
とりあえず、セール中にゲットできたので、時間のあいまに触ってみようと思います。

関連のある記事

2012年1月16日月曜日

GB2ShapeCacheのCircleシェイプ読み込みバグ

circles by painted fish studio
circles, a photo by painted fish studio on Flickr.

PhysicsEditor からエクスポート(Box2D generic PLIST形式)したデータを読み込むクラス GB2ShapeCache で Circle シェイプが正しく読み込まれませんでした。
今現在、PhysicsEditor 1.0.5 に同梱されてくるものには、バグが含まれているので注意した方が良いでしょう。

開発者には既にレポートと修正パッチを渡しましたが、ここにも修正方法を書いておきます。

2011年12月22日木曜日

AdMaker SDK3.6導入テスト

iOS版 AdMaker SDK 3.6を導入してみました。
ここに来るまでの過去数バージョンのSDKには不具合があり、何回も導入テストで時間を無駄にされられたので、今回もドキドキしております。
半日テストしてみた限りでは、今のところ大きな問題は出ておりません。

導入方法に関しましては、公式の導入マニュアルをご覧ください。

注意点としては、今までアプリ毎に指定していた adURL、siteID、zoneID が、adURLひとつに集約されました。ただし、下位互換性を保つとやらで、siteID、zoneIDには、それぞれ @"111"と@"1111"を指定するようになっています。

2011年11月8日火曜日

AdWhirlのCustom Eventを使う

Custom Car June 2011 by NickGrant.co.uk
Custom Car June 2011, a photo by NickGrant.co.uk on Flickr.
AdWhirl で標準対応していない広告サービスを使うには、Custom Event という仕組みを使います。
使い方について需要がありそうなので、書いてみます。

実はめちゃくちゃ簡単です。
ただし、AdMaker なら AdMaker SDK を、AdLantis なら AdLantis SDK を単独で組み込んで使用できるスキルは必要です。(笑)

AdWhirl の管理画面で、Custom Event を登録します。
Apps の Ad Network Settings で、Add Custom Event というボタンを押します。

AdWhirlとAdStirを比べる

Advertising by Wrote
Advertising, a photo by Wrote on Flickr.
先日リリースしたばかりの iPhone アプリには、AdMaker(mediba ad) を組み込んでいたのですが、これがほとんど広告を配信してくれない状態が続いています。
こういう事があるかもしれないと前々から思ってはいたのですが、最悪のタイミングで起こってしまいました。

それで広告切り替えシステムを導入する気になりました。
試したのは2つ。AdWhirl(3.0.0) と AdStir(1.0.2) です。
AdWhirl は Google 傘下の AdMob のサービスで、SDK はオープンソースになっています。
AdStir は ngi group のサービスで、最近始まったばかりのようです。SDK はフレームワークのみの提供です。

2011年10月17日月曜日

AdMaker SDK 3.4導入

AdMaker SDK 3.4がリリースされました。

更新履歴については今のところ表示されていないようです。

新規に組み込まれる場合は、SDK に入っているサンプルと Readme.txt を読めば特に問題無く組み込めると思いました。注意点追記しました。

3.3 から 3.4 へ SDK を更新する場合には、以下の点に注意するといいと思います。
  • AdMakerView クラスが UIViewController から UIView のサブクラスに変わった。これは 3.1 の時は UIView のサブクラスだったので、一周して結局また元に戻ったということになります。(笑)
  • 上記変更により viewWillAppear と viewWillDisappear メソッドが使えなくなるかと思いきや、互換性を重視してかメソッドは残っている。しかしドキュメントには何も記述されていない。
  • AdMakerDelegate の didLoadAdMakerView メソッドは、広告が読み込み直される度にコールされるようになった。(これは嬉しい) 
  • 内部ブラウザで広告を開く場合、AdMaker.useSafari = NO にする。しかし、 requestAdURL:(NSURLRequest*)request メソッドが呼ばれるだけで、それ以外のアクションは起こらない。内部ブラウザは自分で用意せよということなのかも?
  • AdMakerView をインスタンス化して start メソッドで開始させてから、インスタンスを解放しようとするとクラッシュする。SDK 添付のサンプルプログラムを改造して確認しました。
クラッシュさせるサンプルコードは以下のようになります。
ビルド設定の ARC は OFF にします。
設置したボタンをタップすると、AdMakerView をリリースします。
// SingleViewViewController.m
- (void)viewDidLoad
{
  [super viewDidLoad];
  AdMaker = [[AdMakerView alloc]init];
  [AdMaker setAdMakerDelegate:self];
  AdMaker.viewController = self;
  AdMaker.useSafari = YES;
  AdMaker.backgroundColor = [UIColor clearColor];
  [AdMaker setFrame:CGRectMake(0,360,320,50)];
  [self.view addSubview:AdMaker];
  [AdMaker start];

  UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  [button setTitle:@"end AdMaker" forState:UIControlStateNormal];
  button.frame = CGRectMake(85,50,150,40);
  [button addTarget:self action:@selector(endAdMakerTouched:) forControlEvents:UIControlEventTouchDown];
  [self.view addSubview:button];
}
- (void)endAdMakerTouched:(id)sender
{
  NSLog(@"endAdMakerTouched");
  if (AdMaker) {
    // 注:この時点でAdMakerのリファレンスカウンタは2になっているので release を忘れないこと!
    [AdMaker removeFromSuperview];
    [AdMaker release];
    AdMaker = nil;
  }
}
クラッシュに関してはサポートに問い合わせてみるつもりです。
今回の SDK バージョンは iOS 5 に対応したと書いてあったので、もしかしたらインスタンスの解放を Automatic Reference Counting 任せにしているのかもしれません。
とはいえ、すべてのプログラムが ARC の設定を ON にしているわけでもないので、そういう仕様は厳しいのではないかと思いますが、どうでしょうか。

Related Posts Plugin for WordPress, Blogger...