SlideShare a Scribd company logo
とよすすいぞくかん
                   開発体験記

 和泉 信生 @shinobu_shiva
とよすすいぞくかん
とよすすいぞくかん
とよすすいぞくかん
とよすすいぞくかん
とよすすいぞくかん
Now on App Store




     http://toyosui.jp/
Demo Time
構成


 GPS



       REST - JSON
仕事の分割


  Unity       iOSネイティブ
            サーバサイドシステム

            3Dモデル - 水槽内背景
3Dモデル - 魚      魚デザイン
            インタフェースデザイン
開発環境



■   Editor - MonoDevelop、C#で記述
■   バージョン管理 - SVN
■   アプリ配信 - TestFlight   +   AutoPilot
AssetStoreで買ったもの



■   Next-Gen UI Kit (NGUI) - GUIフレームワーク
■   Auto Pilot - TextFlightのUnity統合
■   Prime31 - Core Location
目次


■   結構ハイポリでモデルが来た!
■   GUI作るの面倒臭い!
    ■   日本語ぇ、、、
■   エディタ拡張とか
3Dモデルの問題
■   結構ハイポリで送られてきた!




                 Draw Calls: 351
MeshMerger
http://www.unifycommunity.com/wiki/index.php?title=MeshMerger




     ■   実行時に複数のメッシュを1つのオブジェクト
         にまとめる
         ■   100個の小さいオブジェクト x1マテリアル = 100 Draw Calls

         ■   1個の大きいオブジェクト x 1マテリアル = 1 Draw Call

     ■   (注)同一マテリアルのオブジェクト限定


   UnifyコミュニティーWikiは Must Check
3Dモデルの問題 - 解決1




              Draw Calls: 17

65536以上のメッシュを持つオブジェクトは
        作れないので注意
リトポ、その他修正


                        ハイポリだったものを
                        円柱+ノーマルマップで
                         擬似的に凹凸を表現




ObjExporter - UnityのメッシュをOBJ形式に出力
 http://unifycommunity.com/wiki/index.php?title=ObjExporter
協力大切


■   Unity+iOSはまだまだ開発ノウハウが少ない
■   モバイル環境での3Dを作った人も少ない



■   お互いに理解、協力、カバーアップ大切
シェーダー



■   Toon Shader が Draw Callsが低くて使いやすい
    ■   Toony-Lightedを基本に軽く変更しながら使用
GUI
■   NGUIとUnityのGUIをハイブリッドで
フォントの問題は大変です(でした)



■   Unity 4 ではモバイル環境でも
    ダイナミックフォントがサポートされます!!
■   その前にプラグインを作った方がおられます!!!
    http://d.hatena.ne.jp/
    nakamura001/20120622/1340367169
■   もう少し早く欲しかった、、、w
さようなら
GUI
■   NGUIとUnityのGUIをハイブリッドで
NGUI用の2D Atlas
iOSネイティブとの連携 - Unity側
   public class iOSMediator : MonoBehaviour
   {
   	

 #if UNITY_EDITOR
   	

 public static string debugUserID = "XXXX-XXXX-XXXX";
   	

 //Unity
   	

 public static void addMapView (){}
   	

   	

 public static string getUserID ()
   	

 {
   	

 	

  return debugUserID;
   	

 }
   	

   #elif UNITY_IPHONE
   	

   //iPhone
   	

   [DllImport("__Internal")]
   	

   private static extern void _addMapView ();
   	

   [DllImport("__Internal")]
   	

   private static extern string _getUserID ();
   	

   [DllImport("__Internal")]
   	

   	

   	

   public static void addMapView ()
   	

   {
   	

   	

  _addMapView();
   	

   }
   	

   	

   public static string getUserID()
   	

   {
   	

   	

 return _getUserID ();
   	

   }
   	

   #endif
   }
iOSネイティブとの連携 - iOS側
extern "C" void _addMapView()
{
  // Unity 画面のルートビューを取得する。
    UIViewController *rootViewController = UnityGetGLViewController();

    //のせる
    mapViewController * mapView = [[mapViewController alloc] initWithNibName:@"mapViewController" bundle:nil];
    [rootViewController.view addSubview:mapView.view];
}




              Unity側                                                             iOS側
     [DllImport("__Internal")]
     private static extern void _addMapView ();                          extern "C" void _addMapView(){}
Unityに文字列渡すときは気をつける
//Unityに文字列を渡す際は、"allocate on the heap"しないといけないからその処理
//http://d.hatena.ne.jp/nakamura001/20110714/1310669988
char* MakeStringCopy (const char* string)
{
	

 if (string == NULL)
    {
	

 	

   return NULL;
	

 }

	

 char* res = (char*)malloc(strlen(string) + 1);
	

 strcpy(res, string);
	

 return res;
}


        String values returned from a native method should be UTF-8 encoded
        and allocated on the heap. Mono marshaling calls are free for them.
魚データの管理
■   皆のミカタExcel




そのままでは読み込めないのでUnityを拡張
Unityを拡張?
■   Assetsフォルダ内のEditorフォルダ内に
    エディタ拡張のスクリプトを配置する
    ■   Assetsフォルダ直下じゃなくても良い
インスペクタ拡張
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(FishMap))]
public class FishMapEditor : Editor
{

	

   public override void OnInspectorGUI ()
	

   {
	

   	

  DrawDefaultInspector ();

             //以下、UnityのGUI APIで記述
      //Editorのみで使える便利なAPIも多数ある
       }
}




      .NetのAPIやOSネイティブの
           機能も使えます
メニュー拡張
AppendScene - エディタ内でシーンをマージする
 using UnityEngine;
 using UnityEditor;
 using System.Collections;

 public class AppendScene : Editor
 {
 	

 [MenuItem("File/Load Scene [Additive]")]
 	

 static void Apply ()
 	

 {
 	

 	

 string strScenePath = AssetDatabase.GetAssetPath (Selection.activeObject);
 	

 	

 if (strScenePath == null) {

 	

   	

   	

   EditorUtility.DisplayDialog ("Select Scene", "You Must Select a Scene first!", "Ok");
 	

   	

   	

   return;
 	

   	

   }

 	

   	

   EditorApplication.OpenSceneAdditive (strScenePath);
 	

   	

   return;
 	

   }
 }
多用したテクニック - 〇〇Manager
シーン内に1つだけ存在して複数のクラスから利用されるUIやサウンド制御は、
   クラスにpublic変数を作ってインスペクターで参照を設定したり、
          Find関数で見つけ出したりが面倒くさい


     public class DictionaryUIManager : MonoBehaviour
     {
       public static DictionaryUIManager i;

           void Start ()
           {
     	

   	

 i = this;
           }
     }

              DictionaryUIManager.i.SomeMethod();

            シングルトンパターン的な使い方
Script実行順序が大事
メニュー → Edit → Project Settings → Script Execution Order




                   初期化順序は計画的に
シーン間でのデータ受け渡し




■   PlayerPrefs or DontDestroyOnLoad
LoadLevelAdditiveAsync




            ポップアップのようなものは
             別シーンで作ると便利
なんやかんやでプロトタイプ完成




■   アプリサイズ56MB、、、、
分割ダウンロード



■   AssetBundleを作って水族館ごとに分割
■   各水族館への初入館時にシーンをダウンロード
初期リリース



■   無事リリースしました
■   バグ発見済みです
結論



■   ジョイントワークは楽しい!
■   リスペクト大事
■   コミュニティー資産大事
Unity マスターブック

More Related Content

PPTX
Unity C#3からC#6に向けて
PDF
HoloLensハンズオン:AirTap & SpatialMapping編
PPTX
知覚動考、とりあえずShaderを書いてみる
PPTX
50分でわかるブループリントについて
PDF
Unityと.NET
PDF
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
PDF
Unityとスマートフォンアプリの最適化
PDF
FlutterをRenderObjectまで理解する
Unity C#3からC#6に向けて
HoloLensハンズオン:AirTap & SpatialMapping編
知覚動考、とりあえずShaderを書いてみる
50分でわかるブループリントについて
Unityと.NET
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Unityとスマートフォンアプリの最適化
FlutterをRenderObjectまで理解する

What's hot (20)

PDF
Unity恐くないよ!!
PDF
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
PDF
Android gameprogramming
PPTX
Unity * スマートフォン開発で学んだこと
PPTX
Unityのポストエフェクトで遊ぶ!
PDF
UnityのMultiplayサービスの得意な事
PDF
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
PDF
Androidプログラミング初心者のためのゲームアプリ開発入門
PDF
A Framework for LightUp Applications of Grani
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
PDF
Unity での asset bundle による追加コンテンツの扱い方
KEY
初心者向けAndroidゲーム開発ノウハウ
PDF
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
PDF
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
PDF
Unity×HTMLで作るiPhone オンラインゲーム開発事例
PDF
低スペックPCでも動く!UE4の設定&歩き方
PDF
Unity講習会(初級)
PPTX
未来のプログラミング技術をUnityで -UniRx-
PDF
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
PDF
Unity × graphics × effects
Unity恐くないよ!!
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
Android gameprogramming
Unity * スマートフォン開発で学んだこと
Unityのポストエフェクトで遊ぶ!
UnityのMultiplayサービスの得意な事
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
Androidプログラミング初心者のためのゲームアプリ開発入門
A Framework for LightUp Applications of Grani
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Unity での asset bundle による追加コンテンツの扱い方
初心者向けAndroidゲーム開発ノウハウ
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Unity×HTMLで作るiPhone オンラインゲーム開発事例
低スペックPCでも動く!UE4の設定&歩き方
Unity講習会(初級)
未来のプログラミング技術をUnityで -UniRx-
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
Unity × graphics × effects
Ad

Viewers also liked (20)

PDF
iOSアプリ制作ツールアプリビルダーを支える技術
PDF
Air for iOS について
PPTX
KIFの導入
PDF
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
PPTX
Uiテスト@yidev
PDF
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
PDF
Getting started with Handoff
PDF
Objective-Cプログラマのためのswift導入法
PDF
勉強会に行こう
PDF
これからはじめる SwiftPlayground入門
PDF
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
PDF
サーバーからiOSアプリを変更する
PDF
Xcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidev
PDF
Swift本ができるまで
PDF
エンジニア戦記 〜小さなチーム、大きな未来〜
PDF
WatchKitを実際にさわってみてわかったこと
PDF
iOSエンジニア in ハードウェア・プロジェクト
PDF
iOS 通信のパフォーマンス改善 ・ iOSオールスターズ登壇資料
PDF
効率的なアプリ開発のベストプラクティス
PPTX
マシな画面を作る
iOSアプリ制作ツールアプリビルダーを支える技術
Air for iOS について
KIFの導入
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
Uiテスト@yidev
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
Getting started with Handoff
Objective-Cプログラマのためのswift導入法
勉強会に行こう
これからはじめる SwiftPlayground入門
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
サーバーからiOSアプリを変更する
Xcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidev
Swift本ができるまで
エンジニア戦記 〜小さなチーム、大きな未来〜
WatchKitを実際にさわってみてわかったこと
iOSエンジニア in ハードウェア・プロジェクト
iOS 通信のパフォーマンス改善 ・ iOSオールスターズ登壇資料
効率的なアプリ開発のベストプラクティス
マシな画面を作る
Ad

Similar to Unityの夕べ in Fukuoka (20)

PDF
スマホ開発でも活きたこと、まだ活かせていないこと 170325 1043
PDF
UnityLecture @Kyushu University
PDF
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
PDF
OpenCV/ARCore/Unityで作る塗り絵AR
PDF
Extending the Unity Editor Extended
PPTX
Unity勉強会ハンズオン
PDF
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
PPTX
ゲームツクール!第11回 エディター拡張してみよう
PDF
UnityとBlenderハンズオン第1章
PDF
はじめようARCore: Motion Tracking & Image Tracking編
PDF
Let’s study unity
PPT
【Unity道場】使って覚えるTileMap
PDF
Unity&unreal engineハンズオン資料 unity
PDF
Unityで横スクロールアクションゲームを作ってみる(第2回unity初心者勉強会)
PDF
OpenCVとARCoreで作るスタンプAR in 宮崎
PDF
Extending the Unity Editor
PPTX
メガ Unity ユーザーミートアップ 2012
PDF
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
PDF
UnityとBlenderハンズオン第2章
PDF
知って得するUnity エディタ拡張編
スマホ開発でも活きたこと、まだ活かせていないこと 170325 1043
UnityLecture @Kyushu University
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
OpenCV/ARCore/Unityで作る塗り絵AR
Extending the Unity Editor Extended
Unity勉強会ハンズオン
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
ゲームツクール!第11回 エディター拡張してみよう
UnityとBlenderハンズオン第1章
はじめようARCore: Motion Tracking & Image Tracking編
Let’s study unity
【Unity道場】使って覚えるTileMap
Unity&unreal engineハンズオン資料 unity
Unityで横スクロールアクションゲームを作ってみる(第2回unity初心者勉強会)
OpenCVとARCoreで作るスタンプAR in 宮崎
Extending the Unity Editor
メガ Unity ユーザーミートアップ 2012
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
UnityとBlenderハンズオン第2章
知って得するUnity エディタ拡張編

Unityの夕べ in Fukuoka

Editor's Notes