ラベル iOS の投稿を表示しています。 すべての投稿を表示
ラベル iOS の投稿を表示しています。 すべての投稿を表示

2014年1月8日水曜日

【Unity,iOS】iOS向けビルド時にXCodeで設定することまとめ

Unity更新するたびにiOS用XCodeプロジェクトが初期化されてつらい。
まいどまいどFrameworkの設定やら覚えきれない。

とりあえず自分用に覚え書き。増えたら書き足していこう。

まずはiOS用。Android用もそのうちまとめる。

利用してるもの

GAMEFEAT

  • UnityPlugin ver3.0.0(最新3.1.0なのでそのうち更新する)
  • iOS SDK 2.1.1(最新3.1.0なのでそのうち更新する)
  • 利用はアプリウォールのみ

Adfurikun

  • UnityPlugin ver2.2(最新2.2.2なのでそのうち更新する)
  • 利用はバナー広告のみ

XCodeでの設定箇所

Adfurikun用の設定

adfurikunsdk.frameworkを追加

Drag&Dropだけ。なんか取り込み画面でるけどそのままOK押す。

iOS標準(?)frameworkを追加

Targets選択 -> Build Phases -> Link Binary With Libraries の "+" ボタンから
AdSupport.frameworkを追加

GameFeat用の設定

GameFeatKit.frameworkを追加

gamefeatフォルダとGameFeatKit.frameworkをD&D
マニュアルにはJSONKitも入れろって書いてあるけど
入れたら多重定義がどうのこうのってエラーでまくったからやめた。
よくわからんけど動くみたいやしいいや。

iOS標準(?)frameworkを追加

CoreTelephony.framework
StoreKit.framework
StoreKitはOptionalでいいらしい。何が変わるかは分からん。

URLScheme設定

GameFeatの相互送客に必要。
Targetsを選択してから
Info -> URL Types にある、"Identifier"と"URL Schemes"を入力


今のところこれだけ(多分
ほんとめんどいわ…。

この作業も自動化できるんだろうか。
してもしたことすら忘れて再確認するんだろうけど…。

2013年12月3日火曜日

【Unity,iOS】シミュレータ向けにビルドするとDebugStringToFileエラーが発生する

リリース用にiPadスクリーンショットを取りたくてシミュレータ向けにビルドしたんだけどエラーした。

バージョン

・Unity 4.2.2f
・XCode 5.0.1

症状

Unity側でBuild&Run〜Xcodeプロジェクトが起動する。ここまでOK
そのままXCodeプロジェクトがビルドされて〜エラー。
Undefined symbols for architecture i386:
  "DebugStringToFile(char const*, int, char const*, int, int, int, int, int)", referenced from:
      prcore::Surface::ClearImage(prcore::color32 const&, prcore::Surface::ClearMode) in libiPhone-lib.a(blitter_integer.o)
      prcore::Surface::BlitImage(prcore::Surface const&, prcore::Surface::BlitMode) in libiPhone-lib.a(blitter_integer.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
実機で実行するには何の問題もない。なんやろ。

調べた

調べたら海外でも騒いでた。
ここは未解決だったけど。
http://forum.unity3d.com/threads/205241-XCode-5-Unity-4-2-2-on-OS-X-10-8-5
こっちで解決してた。
http://stackoverflow.com/questions/19871377/xcode-undefined-symbols-for-architecture-i386-debugstringtofile-when-building

Unity 4.3で解決済みだってさ。

解決

Unityを更新して解決。
よかったよかった。

2013年10月2日水曜日

【Unity、iOS】adfurikun導入奮闘記その2。やっとサンプル動いた!!

こちらの記事の続きです。

アドフリくんさんから

adfurikunをUnity-iOSで使いたいけどエラーで動かないーって困ってた矢先、
先日大阪でお会いしたアドフリくんさんの営業さんからメールが…!

営業さん:ブログ拝見しました。お困りのようでしたので開発メンバーに確認しました。
     こちらをご確認ください。ごにょごにょ・・・のような内容

なんて親切な…!
それがお仕事なのかもしれないですが丁寧な対応はやはり好感持てますね。

その後サポート担当の方と何通かやりとりしたところ
unity-pluginに同梱されていたsdkが古いバージョンだったことが判明。
差し替えていただけました。
早い、ここまでたったの3時間。
さらに驚いたのがXCodeでのビルド手順を資料として添付してくださったこと。
自分がXCode分かんない〜なんて書いたからだと思うのですが
この一手間惜しまない感じ!なんなの!なんでこんなにイケメン揃いなの!w

完全なステマ記事になってしまうのでこれぐらいにしておきますが
対応の良さにはほんと感動しました。
アドフリくんいいよアドフリくん。

で、再チャレンジ

動いたーーーーーー!
ありがとうございました!!

本当の原因

ここまで来て考えました。
先日のサンプルでもSDKだけ別でダウンロードして差し替えれば
動いてたはずなんですね。それも試してたんですよ。
でも動かなかった…なぜか。

思い当たる点が1つ。

ZIP解凍時のエラー

なぜか先日アドフリ君のUnitySampleをダウンロードして解凍したときエラーしたんです。
”予期せぬエラー”的な何か。
何度ダウンロードしなおしても同じ。Mac再起動しても同じ。
で、Macじゃ解凍できないのかなーと思いWindowsでダウンロード、解凍。
それで出てきたのがこちら。
"__MACOSX"ってフォルダなんだろうなーとか思いましたが
早く試したかったので無視してました。

そのときのファイルを使ってエラーが再現するかテスト。
案の定同じエラーで進めませんでした。
これがframework追加後の構成。
Headersって変なファイルだけ。
そりゃーエラーしますわ…。

でも不思議なことに今ならMACで解凍してもエラーしないんですよね。
なんだったんだろう…


結果的に原因はZIP解凍失敗ってめっちゃ恥ずかしい内容でした。
こんなことのために中の人に時間を割かせてしまってほんと申し訳ないです…。
素晴らしい対応をありがとうございました m(__)m


2013/10/03 追記

"__MACOSX"について調べてみました。
MACで圧縮したのをWindowsで解凍すると出てくるんですね。
「__MACOSX」の意味は? いま敢えて「zip」を見直す

2013年10月1日火曜日

【Unity、iOS】adfurikun導入奮闘記。XCode5にしてどハマり中!

お久しぶりです。
最近はadfurikunのアカウント申請が通ったので使ってみようとがんばってました。
adfurikunさんはunityプラグインも提供してくださってるので楽勝だろーと思ってました。

だけど、どーにもこーにもビルド通せない・・・。
真っ赤
定義がないって言ってんだけどなんのこっちゃ!
XCode触ったことないしObjective-C(なのかな?)も分かんないし
何をどうしていいのか勝手が分かりません。

ぐぐってみたけど分からず。XCodeいろいろ触ってみたけど変わらず。

とりあえず環境を最新にしてみるかーって
XCodeを4.6.3から5に上げました。

いや、ハマるの分かってるんですけどね…
訳分からないのにとりあえず更新とか地獄見るパターン。

はい、案の定トラブりました。
そしてタイトルにつながります。

UnityからiOS向けにBuild&Runすると…
UnityException: Launching iOS project via Xcode4 failed. Check editor log for details.
こんなエラー。UnityからXCode起動しません。


困ってること
・UnityからXCode呼び出せない
  そもそもUnity3DってXCode5対応してるのかな。
・XCodeのレイアウトが変わっちゃって戻せない
  なんかソースコードだけが全画面になっちゃってサイドバーとか消えちゃった
・Adfurikun Unityサンプルのビルドエラー

これぐらい直せない自分の技術力のなさに落胆しつつ
明日も仕事なので寝ます。おやすみなさい。

あー頭いたい。


2013/10/02追記
アドフリくんの中の人の素晴らしいサポートにより解決しました。
解決編はこちら

2013年7月28日日曜日

Google Maps SDK for iOS で現在地をマップ中心に表示し続ける



MapKitよりGoogle Maps SDK for iOS のほうが使いやすいって噂なので使ってみた。
とりあえず現在地表示。

やりかた

1.Google Maps SDK for iOSの導入

ここに書いてる通りやる。とっても親切に書いてる。
http://qiita.com/shu223/items/bfb5ef3e45682c2bb763
・ちょっとだけつまずいたところ
ビルド設定の「Architectures を armv7 にする」なんだけど、
俺のはStandard(armv7,armv7s)ってなってて、ん?って思ったけど、そのままでいけた。

2.コード書く

マップ表示して現在地表示するためにちょっとコード書く。
なんだかインポートのコードの表示がおかしい。。。

ViewController.h
#import 
#import 

@interface ViewController : UIViewController

@end

ViewController.m
#import "ViewController.h"
#import 

@interface ViewController ()

@end

@implementation ViewController

GMSMapView *_mapView;
CLLocationManager *_locationManager;

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 地図の表示
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6];
    _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    _mapView.myLocationEnabled = YES;
    _mapView.settings.myLocationButton = YES;

    self.view = _mapView;
    
    _locationManager = [[CLLocationManager alloc] init];
    
    // 位置情報サービスが利用できるかどうかをチェック
    if ([CLLocationManager locationServicesEnabled]) {
        _locationManager.delegate = self;
        // 測位開始
        [_locationManager startUpdatingLocation];
    } else {
        NSLog(@"Location services not available.");
    }

}

// 位置情報更新時
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
    [_mapView animateToLocation : [newLocation coordinate]];
    
    //緯度・経度を出力
    NSLog(@"didUpdateToLocation latitude=%f, longitude=%f",
          [newLocation coordinate].latitude,
          [newLocation coordinate].longitude);
}

// 測位失敗時や、位置情報の利用をユーザーが「不許可」とした場合などに呼ばれる
- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error{
    NSLog(@"didFailWithError");
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

良い感じに書けたら完成。
左上の再生ボタンを押すとiPhoneのSimulatorが起動して実行される。


今回も皆さんのおかげでとってもいい感じに出来ました。

今回参考にしたサイト Google Maps SDK for iOSの導入
http://qiita.com/shu223/items/bfb5ef3e45682c2bb763

現在地の表示
http://www.atmarkit.co.jp/ait/articles/1104/04/news117_2.html


2013年7月23日火曜日

MapKit で現在地をマップ中心に表示し続ける



MacBookが手に入ったので早速マップ表示するiPhoneアプリを作ってみることにした。
とりあえず現在地表示。

やりかた

1.Xcodeプロジェクト作成

何はともあれ iPhoneアプリを作るのでXcode起動してプロジェクト作成。


どんなアプリケーションにするか聞いてくるので、今回はSingle View Applicationを選択。


プロジェクト名は適当にMapKitSampleとかにした。
「Use Storyboards」にチェック(画面レイアウトするのに使うっぽい)
「Use Automatic Reference Counting」にチェック(コンパイラがオブジェクトの管理してくれるっぽい)


プロジェクトフォルダ作る場所を適当に選んでCreate


プロジェクトできた。わーい。


とりあえず、SimulatorがiPadになってるからiPhoneに変更


2.必要なFrameworkの追加

画面中央の「Summary」のところを下にスクロールしていくと「Linked Frameworks and Libraries」があるので、「+」ボタンで追加。


今回必要なのはMapKitとCoreLocationってやつなので、順に追加する。


両方追加するとこんな感じ。


3.画面にMapViewを貼り付ける

MainStoryboard_iPhone.storyboardを選択して画面レイアウトを表示する。


右下の〜Viewとかがあるところを下にスクロールしていくとMapViewがあるのでドラッグドロップで貼り付ける。
これでもうマップ表示できるみたい。あら簡単。


4.コード書く

今回は現在地を表示するって決めたので、ちょっとだけコード書く。
ViewController.hを選択してソースを開く。
Frameworkを読み込むために下記コードを追加する。(なんかソースの表示がおかしくなっちゃう。)
#import 


良い感じに書けたら、その下のViewController.mを選択してソースを開く。
下記コードを追加する。
MKMapView *_mapView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 地図の表示
    _mapView = [[MKMapView alloc] init];
    _mapView.frame = self.view.bounds;
    _mapView.mapType = MKMapTypeStandard;
    _mapView.showsUserLocation = YES;
    [self.view addSubview:_mapView];
    [_mapView.userLocation addObserver:self
                            forKeyPath:@"location"
                               options:0
                               context:NULL];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {
    
    // 地図の中心座標に現在地を設定
    _mapView.centerCoordinate = _mapView.userLocation.location.coordinate;
    
    // 表示倍率の設定
    MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
    MKCoordinateRegion region = MKCoordinateRegionMake(_mapView.userLocation.coordinate, span);
    [_mapView setRegion:region animated:YES];
}


これも良い感じに書けたら完成。
左上の再生ボタンを押すとiPhoneのSimulatorが起動して実行される。


とってもいい感じに出来ました。

Objective-Cは全然わかんないけどaideal.jpさんのお陰で出来ました。
http://aidealjp.blog.fc2.com/blog-entry-23.html

調べてるうちにわかったけど、MapKitとGoogleMapは違うんだね。
次はGoogle Maps SDK for iOSを使ってやってみようかな。

2013年5月19日日曜日

Unityまとめ

Unity系記事へのリンク

覚えたことをまとめてます。
上から書いた順にならんでます。(たぶん)
増えてきたら種類別に分けようとおもってます。
[2013/11/02 追記]てきとーにカテゴリ分けしました。

Unity5

インストール

Unityの基本っぽいこと

新GUI(uGUI)

NIFTY Cloud mobile backend(mBaaS)

ゲームの公開方法

便利クラスとか

できたらいいなーって調べたこと

Gitによるソース管理入門

自分用メモ

広告実装

NGUI

定番Assetの1つ。GUI作るならこれ。
AngryBirdみたいな2Dゲーム作るならこれ(らしい)あんまり使えてない。
オンライン系を手軽に実装するならこれ。

おねがい

私naichilabが勝手に調べて勝手に書いてます。
間違いやアドバイスあったら教えていただけるととてもうれしいです!
ぜひコメント欄やtwitterなどでご連絡下さい。
    Related Posts Plugin for WordPress, Blogger...