SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
ここが変わる!Unity 5のスマホ開発
 ∼アセットバンドル、ビルド、プラグイン
∼
ユニティ・テクノロジーズ・ジャパン
エバンジェリスト
伊藤周
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundle
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
今までのAssetBundle問題点
•ビルドスクリプトが複雑
•ビルドに時間がかかる
•アセットの依存関係が面倒
•互換性
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
解決方針
• シンプルな感じに
• Simple UI
• Simple script 
• 追加ビルド可能に
• 依存性はUnityが解決
• Manifest file
• バージョン間の互換性
• 新旧混ぜるな危険
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
変更点
•新しいAssetBundleビルド方式
•新しいAssetロード方式
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
新しいAssetBundleビルド
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
まずは
ざっくり
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
新しいAssetBundleビルド
Step1 Asset と AssetBundle 間を結びつける
Step2 ビルドするスクリプトを呼ぶ
以上!
public static void BuildAssetBundles(){
BuildPipeline.BuildAssetBundles();
}
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
ちょっと
深く掘り下げ
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundle名前付け
• 小文字のみ
• 同名禁止
• パス構成
• Editor拡張で一気に「名前」=「パス」と変更も可能
public class CsutomImporter : AssetPostprocessor {
void OnPostprocessTexture(Texture2D texture) {
assetImporter.assetBundleName = assetPath;
}
}
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Buildスクリプト
• 出力パス
• BuildAssetBundleOptions
• 出力ターゲット
public static void BuildAssetBundles()
{
BuildPipeline.BuildAssetBundles(
outputPath,
BuildAssetBundleOptions.IgnoreTypeTreeChanges,
EditorUserBuildSettings.activeBuildTarget);
}
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
BuildAssetBundleOptions
• IngoreTypeTreeChanges(New!)  
タイプツリーが変わっても無視
=ソースコード変更しても変化したとみなされない
• DisableWriteTypeTree
タイプツリー自体を削除(サイズ削減用途として)
(こちらをオンにしてIngoreTypeTreeChangesをオンはできない)
• CollectDependencies →いつでもON
• DeterministicAssetBundle  →いつでもON
• CompleteAssets →廃止。いつでもコンプリート
• ForceRebuildAssetBundle(New!) →強制的にリビルド
• AppendHashToAssetBundleName(New!)  →ハッシュを追加
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
バージョン互換性について
AssetBundle
(Unity5.1)
AssetBundle
(Unity5.2)
AssetBundle
(Unity4.6)
⭕️❌
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
バージョン互換性について
• タイプツリーを持っているのであればバージョンア
ップしても古いAssetBundleは使用可
• 要Unity5
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
依存関係
•Push/Pop いらない
•勝手に依存関係を調べて
くれる
•「依存関係があるアセッ
ト群を全てビルド」が必
要なくなる
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Manifestファイルについて
• Single Manifestファイル
(ビルド時のフォルダ名が
AB名になる)
• 他の.manifestファイル
→親玉。依存関係を解決できる。
 ランタイムに読んで使用
→インクリメンタルビルドにだけ
 関係する。
 ランタイム時は読み込まない
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
.manifest ファイル
Asset
Bundle
“B”Asset
Bundle
“A”
A.manifest
• CRC
• アセット名
• 依存関係
• Hash
• ClassTypes
B.manifest
Asset
Bundle
“C”
C.manifest
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
Single Manifestファイル
Single Manifest
C.manifest
A.manifest
B.manifest
D.manifest
•全AssetBundle名
•Assetの依存関係
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
Variantとは
• HDとSDを同じアセットとして扱える仕組
み
• 例: ロースペックなスマホではSD、ハイ
スペックならHDで表示
• エディタ右下で設定
• 設定しているアセットと設定していないア
セットを混ぜてはいけない
• 違うABで同じVariantも設定可
SD HD
★を出して
SD
モード
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
新しいAssetロード方式
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
まずは
ざっくり
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
サンプルプロジェクトを使おう
• サンプルプロジェクトをDL
• http://files.unity3d.com/vincent/assetbundle-demo/users_assetbundle-demo.zip
• サンプルシーン
• AssetLoader(Assetロードのサンプル)
• SceneLoader(シーンロードのサンプル)
• VariantLoader(Variantのサンプル)
• スクリプト
• AssetBundleManager.cs (マネージャークラス)
• BaseLoader.cs (基本ローダー)
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
ちょっと
深く掘り下げ
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
• AssetBundle取り扱いクラスのサンプル
• 機能
1.ABの基本的なロードの仕組み
2.依存関係の解消
3.エディタシミュレーション
4.Variantsを使った切り替え
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 1. 基本ロードの仕組み
LoadAssetAsync request.GetAsset
AssetBundleManager.cs
Baseloader.cs
キュー
キュー
キュー
request
Done!
LoadAssetBundle
WWW発行 キュー
AB名
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 1. 基本ロードの仕組み
1.アプリ側からLoadAssetAsyncを呼び出される
2.LoadAssetBundleInternalで
WWW.LoadFromCacheOrDownloadを発行して
m_DownloadingWWWsにキューを突っ込む
3.Updateでキューを回して、終わったらDispose
4.依存関係のロードも
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 2. 依存関係の解消
AssetBundleManager.cs
LoadAssetBundle
AssetBundleManifest
AB名
この
ABに依存する、全て
のABをくれ
依存AssetBundle1
依存AssetBundle2
依存AssetBundle3 Done!
Done!
Done!
ロード
ロード
ロード
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 2. 依存関係の解消
1. m_AssetBundleManifest.GetAllDependencies(abName) で依
存しているAB名を取得
2. 1で取得したABをLoadAssetBundleInternalでロード
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 3. エディタシミュレーション
LoadAssetAsync request.GetAsset
AssetBundleManager.cs
Baseloader.cs
request
AB名
AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 3. エディタシミュレーション
1. エディタ上で可否をトグル
2. Initialize,LoadAssetBundle,UnloadAssetBundleを何もしないで
返す
3. LoadAssetAsyncでは
AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName
でアセットパスを取得して、そこからアセットを取り出す
4. いかにもロードしているかのように返す
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 4. Variantsを使った切り替え
AssetBundleManager.cs
LoadAssetBundle
RemapVariantName
StarObj.sdStarObj.hd
SD
AssetBundleManifest
設定
していたVariant
を付加
Kamen.sd
Yaranai.sd
StarObj.sd
Kamen.hd
Yaranai.hd
StarObj.hd
一致する
名前を検索
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AssetBundleManager.cs
 4. Variantsを使った切り替え
1.m_AssetBundleManifest.GetAllAssetBundlesWithVariant で
全Variant付きABを取得
2. 1から該当のアセットバンドル名を検索
3. 最後のvariant文字列(.hd/.sd)を差し替えてアセットバンド
ル名を返す
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
デモ
• https://github.com/makoto-unity/NewAssetBundleSample/
• ジュエルセイバーFREE
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
ビルドHack
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
ところで
AssetBundleビルド
時間かかりません?
COPYRIGHT 2014 @ UNITY TECHNOLOGIES
そんな
あなたのための
いいHack
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Projectの
コピー4
Projectの
コピー3
Project
マルチプロセスビルドHack
• 何個もビルドプロセスを走ら
せて、並行でビルド
• 複数のプロジェクトを用意
• プロセスごとに別のプロジェ
クトを使う
• 最終成果物(AssetBundle)だ
けを集積
Projectの
コピー2
Projectの
コピー1
全AssetBundle
AB1
AB2
AB3
AB4
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
• プロジェクトファイルを複数作成
• シンボリックリンク
• Library, ProjectSettings フォルダをリンク
• Assets はその中にあるフォルダとファイルをリンク
• Tempはリンクしない
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
• Unityはバッチモードを使う
• Unity -quit -batchmode -projectPath [path]
-executeMethod BuildScript.BuildAssetBundlesBatch
• ビルドするAssetBundleは分担を分ける
• 例:100個あるABのうち、1~25はプロセス1、26∼50
はプロセス2…
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
rm -rf $2
mkdir $2
cd $2
ln -s ../$1/AssetBundles .
ln -s ../$1/Library .
ln -s ../$1/ProjectSettings .
mkdir Assets
cd Assets
ln -s ../../$1/Assets/* .
/Applications/Unity5_Latest/Unity.app/Contents/MacOS/Unity -quit -batchmode -
projectPath /Users/makoto/Unity/GitHub/$2 -logFile /Users/makoto/Unity/
GitHub/tmp.log -executeMethod BuildScript.BuildAssetBundlesBatch $3 $4
• 用法:ABBuildScript.bat [src] [dst] [from] [to]
ビルドスクリプトの例
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
public static void BuildAssetBundlesBatch()
{
// Choose the output path according to the build target.
string outputPath = Path.Combine(kAssetBundlesOutputPath,
BaseLoader.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget) );
if (!Directory.Exists(outputPath) )
Directory.CreateDirectory (outputPath);
string [] args = System.Environment.GetCommandLineArgs();
int startRatio = int.Parse(args[9]);
int endRatio = int.Parse(args[10]);
string [] allAssetBundleNames = AssetDatabase.GetAllAssetBundleNames();
int counter = allAssetBundleNames.Length * startRatio / 100;
int counter_end = allAssetBundleNames.Length * endRatio / 100;
AssetBundleBuild[] buildMap = new AssetBundleBuild[counter_end - counter];
int num = 0;
for( int i=counter ; i<counter_end ; i++ ) {
string abname = allAssetBundleNames[i];
buildMap[num].assetBundleName = abname;
buildMap[num].assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(abname);
num++;
}
BuildPipeline.BuildAssetBundles (outputPath, buildMap, 0, EditorUserBuildSettings.activeBuildTarget);
}
BuildScript.cs
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
• 結果!
• x1 16:16
• x2 8:12
• x4 5:03
• x5 4:43
• x8 3:26
(MacBookPro Retinaコア4)
•ほぼ比例して時間短縮できる
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
マルチプロセスビルドHack
• 注意点
• 未来永劫使えるとも限らない!
• そもそもUnityのAssetBundleビルドがマルチスレッド
化すればいいのでは…
• 運用には自己責任で…
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
ビルド
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
ビルドの変更点
• IL2CPP
• 64bit対応のため
• ビルドサイズ問題は?
→まさに今、対応中
• Use IL2CPP precompiled header
• Xcodeビルド時間短縮(例: 63sec→54sec)
• Prebake Collision Meshes
• 事前にMeshColliderの計算をしておく
• サイズが若干大きくなるトレードオフ
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
UnityEditor.iOS.Xcode
• 待望のXcodeプロジェクトを直接編集可能に!
• frameworkの追加/コンパイルオプションの追加/lib,headerパ
スの追加
• ドキュメントがまだない
• https://bitbucket.org/Unity-Technologies/iosnativecodesamples/
src/a0bc90e7d6358e456caf25d717134864218740a7/
NativeIntegration/Misc/UpdateXcodeProject/Assets/Editor/
XcodeProjectUpdater.cs?at=stable
• http://bit.ly/1CSDBYo (短縮URL)
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
UnityEditor.iOS.Xcode
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path) {
if (buildTarget == BuildTarget.iOS) {
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string target = proj.TargetGuidByName("Unity-iPhone");
// こうやって他frameworkとかを追加
CopyAndReplaceDirectory("Assets/OpenCVForUnity/iOSforXcode/opencv2.framework",
Path.Combine(path, "Frameworks/opencv2.framework"));
proj.AddFileToBuild(target, proj.AddFile("Frameworks/opencv2.framework",
"Frameworks/opencv2.framework",
PBXSourceTree.Source));
File.WriteAllText(projPath, proj.WriteToString());
}
} http://bit.ly/1CSDBYo
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
Plug-in
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Plug-in の変更点
• Plugins フォルダ以外でも追加可能
• それぞれを個別で選択可能
• 重複も可能()
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Plug-in の変更点
• 依存するFrameworkを選択可
• コンパイルオプションを設定可
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Plug-in の変更点
• 「全部再設定しなくちゃいけないの?」
→インポート時に Plugins/iOS/ に置けば自動的に認識
• 「画像とかPluginとして認識されないけど」
→ Plugins フォルダに置きましょう
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Native Code Plug-in (復習)
[DllImport("__Internal")]
private static extern void callNativeFunc();
void callNativeFunc()
{
[[TheNativeClass instance] theFunc];
}
@implementation TheNativeClass
static TheNativeClass *instance_ = nil;
+ (TheNativeClass *)instance{
if (!instance_) {
instance_ = [TheNativeClass new];
}
return instance_;
}
- (void)theFunc { NSLog(@“call func”); }
@end
Unityからネイティブ
の関数を呼び出し
CからObjCを
呼び出し
ObjCを呼び出し
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Native Code Plug-in (直接呼出し型)
• ObjC.cs
public class ObjC
{
[DllImport("__Internal")]
public static extern IntPtr objc_getClass (string name);
[DllImport("__Internal")]
public static extern IntPtr sel_registerName (string name);
[DllImport("__Internal")]
public static extern IntPtr objc_msgSend (IntPtr self, IntPtr op);
}
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Native Code Plug-in (直接呼出し型)
IntPtr instance;
IntPtr classInfo;
void Start() {
classInfo = ObjC.objc_getClass("TheNativeClass");
instance = ObjC.objc_msgSend(ObjC.objc_msgSend(classInfo,
ObjC.sel_registerName(“alloc")),
ObjC.sel_registerName("init"));
}
ObjCを
呼び出し
@implementation TheNativeClass
- (void)theFunc { NSLog(@“call func”); }
@end
void Update() {
ObjC.objc_msgSend(instance,ObjC.sel_registerName(“theFunc"));
}
ObjCを
直接呼んで
instance生成
ObjC関数を
直接呼び出し
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Native Code Plug-in (直接呼出し型)
• 利点
• C → ObjCの橋渡し部分のコードを書かなくても良い
• Singletonを使わない
• 注意点
• 引数が使えない
• http://tsubakit1.hateblo.jp/entry/2014/08/14/022012

Weitere ähnliche Inhalte

Was ist angesagt?

Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~historia_Inc
 
Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK YutoNishine
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcToshiaki Maki
 
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ | エピック・ゲームズ・ジャパ...
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ |  エピック・ゲームズ・ジャパ...GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ |  エピック・ゲームズ・ジャパ...
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ | エピック・ゲームズ・ジャパ...Game Tools & Middleware Forum
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化NIFTY Cloud
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2Shuichi Tsutsumi
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsYutoNishine
 
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例Kouji Hosoda
 
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティスUnite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティスYasuyuki Kamata
 
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことKatsutoshi Makino
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例UnityTechnologiesJapan002
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ祐磨 堀
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウRyohei Tokimura
 
ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座RyousukeItai
 
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -historia_Inc
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 

Was ist angesagt? (19)

Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
 
Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
 
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ | エピック・ゲームズ・ジャパ...
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ |  エピック・ゲームズ・ジャパ...GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ |  エピック・ゲームズ・ジャパ...
GTMF 2015: UE4で開発環境は次なるステージへ~才能のコラボーレーションでクリエイティビティはさらなる高みへ~ | エピック・ゲームズ・ジャパ...
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure Functions
 
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例
 
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティスUnite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
 
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ
 
第5回資料
第5回資料第5回資料
第5回資料
 
ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座
 
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -
少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意 -
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 

Ähnlich wie ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~

Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...Shotaro Suzuki
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development Shotaro Suzuki
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)Masanori Ishigami
 
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送Google Cloud Platform - Japan
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介bitbank, Inc. Tokyo, Japan
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoTcloudconductor
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Shotaro Suzuki
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.Masaki Mukai
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringTakuya Hattori
 
Endo kitura on_bluemix
Endo kitura on_bluemixEndo kitura on_bluemix
Endo kitura on_bluemixjoohoun song
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介Fumiya Sakai
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016VirtualTech Japan Inc.
 

Ähnlich wie ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~ (20)

Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.アメブロの大規模システム刷新とそれを支えるSpring.
アメブロの大規模システム刷新とそれを支えるSpring.
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
 
Endo kitura on_bluemix
Endo kitura on_bluemixEndo kitura on_bluemix
Endo kitura on_bluemix
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
 

Mehr von MakotoItoh

Unityネイティブプラグイン
UnityネイティブプラグインUnityネイティブプラグイン
UnityネイティブプラグインMakotoItoh
 
VRコンテンツを作るということ
VRコンテンツを作るということVRコンテンツを作るということ
VRコンテンツを作るということMakotoItoh
 
One Step Effects 解説
One Step Effects 解説One Step Effects 解説
One Step Effects 解説MakotoItoh
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座MakotoItoh
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unityMakotoItoh
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれMakotoItoh
 
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービスUNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービスMakotoItoh
 
Oculus Game Jam Team C1
Oculus Game Jam Team C1Oculus Game Jam Team C1
Oculus Game Jam Team C1MakotoItoh
 
Hiyoshi Jumpの作り方
Hiyoshi Jumpの作り方Hiyoshi Jumpの作り方
Hiyoshi Jumpの作り方MakotoItoh
 
実写を使ったコンテンツ制作 〜Hiyoshi jump〜
実写を使ったコンテンツ制作 〜Hiyoshi jump〜実写を使ったコンテンツ制作 〜Hiyoshi jump〜
実写を使ったコンテンツ制作 〜Hiyoshi jump〜MakotoItoh
 
Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性MakotoItoh
 
Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?MakotoItoh
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]MakotoItoh
 
Unity名古屋セミナー  [GPU optimization]
Unity名古屋セミナー  [GPU optimization]Unity名古屋セミナー  [GPU optimization]
Unity名古屋セミナー  [GPU optimization]MakotoItoh
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]MakotoItoh
 
Unity名古屋セミナー [Asset Store]
Unity名古屋セミナー [Asset Store]Unity名古屋セミナー [Asset Store]
Unity名古屋セミナー [Asset Store]MakotoItoh
 
Unity名古屋セミナー [プログラミングなしでゲーム開発]
Unity名古屋セミナー [プログラミングなしでゲーム開発]Unity名古屋セミナー [プログラミングなしでゲーム開発]
Unity名古屋セミナー [プログラミングなしでゲーム開発]MakotoItoh
 

Mehr von MakotoItoh (18)

Unityネイティブプラグイン
UnityネイティブプラグインUnityネイティブプラグイン
Unityネイティブプラグイン
 
VRコンテンツを作るということ
VRコンテンツを作るということVRコンテンツを作るということ
VRコンテンツを作るということ
 
One Step Effects 解説
One Step Effects 解説One Step Effects 解説
One Step Effects 解説
 
Unity tips
Unity tipsUnity tips
Unity tips
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unity
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれ
 
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービスUNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス
UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス
 
Oculus Game Jam Team C1
Oculus Game Jam Team C1Oculus Game Jam Team C1
Oculus Game Jam Team C1
 
Hiyoshi Jumpの作り方
Hiyoshi Jumpの作り方Hiyoshi Jumpの作り方
Hiyoshi Jumpの作り方
 
実写を使ったコンテンツ制作 〜Hiyoshi jump〜
実写を使ったコンテンツ制作 〜Hiyoshi jump〜実写を使ったコンテンツ制作 〜Hiyoshi jump〜
実写を使ったコンテンツ制作 〜Hiyoshi jump〜
 
Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性
 
Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?Unityでスマホアプリが作れるか?
Unityでスマホアプリが作れるか?
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]
 
Unity名古屋セミナー  [GPU optimization]
Unity名古屋セミナー  [GPU optimization]Unity名古屋セミナー  [GPU optimization]
Unity名古屋セミナー  [GPU optimization]
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]
 
Unity名古屋セミナー [Asset Store]
Unity名古屋セミナー [Asset Store]Unity名古屋セミナー [Asset Store]
Unity名古屋セミナー [Asset Store]
 
Unity名古屋セミナー [プログラミングなしでゲーム開発]
Unity名古屋セミナー [プログラミングなしでゲーム開発]Unity名古屋セミナー [プログラミングなしでゲーム開発]
Unity名古屋セミナー [プログラミングなしでゲーム開発]
 

Kürzlich hochgeladen

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~

  • 1. COPYRIGHT 2015 @ UNITY TECHNOLOGIES ここが変わる!Unity 5のスマホ開発  ∼アセットバンドル、ビルド、プラグイン ∼ ユニティ・テクノロジーズ・ジャパン エバンジェリスト 伊藤周
  • 2. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundle
  • 3. COPYRIGHT 2014 @ UNITY TECHNOLOGIES 今までのAssetBundle問題点 •ビルドスクリプトが複雑 •ビルドに時間がかかる •アセットの依存関係が面倒 •互換性
  • 4. COPYRIGHT 2014 @ UNITY TECHNOLOGIES 解決方針 • シンプルな感じに • Simple UI • Simple script  • 追加ビルド可能に • 依存性はUnityが解決 • Manifest file • バージョン間の互換性 • 新旧混ぜるな危険
  • 5. COPYRIGHT 2014 @ UNITY TECHNOLOGIES 変更点 •新しいAssetBundleビルド方式 •新しいAssetロード方式
  • 6. COPYRIGHT 2015 @ UNITY TECHNOLOGIES 新しいAssetBundleビルド
  • 7. COPYRIGHT 2014 @ UNITY TECHNOLOGIES まずは ざっくり
  • 8. COPYRIGHT 2015 @ UNITY TECHNOLOGIES 新しいAssetBundleビルド Step1 Asset と AssetBundle 間を結びつける Step2 ビルドするスクリプトを呼ぶ 以上! public static void BuildAssetBundles(){ BuildPipeline.BuildAssetBundles(); }
  • 9. COPYRIGHT 2014 @ UNITY TECHNOLOGIES ちょっと 深く掘り下げ
  • 10. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundle名前付け • 小文字のみ • 同名禁止 • パス構成 • Editor拡張で一気に「名前」=「パス」と変更も可能 public class CsutomImporter : AssetPostprocessor { void OnPostprocessTexture(Texture2D texture) { assetImporter.assetBundleName = assetPath; } }
  • 11. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Buildスクリプト • 出力パス • BuildAssetBundleOptions • 出力ターゲット public static void BuildAssetBundles() { BuildPipeline.BuildAssetBundles( outputPath, BuildAssetBundleOptions.IgnoreTypeTreeChanges, EditorUserBuildSettings.activeBuildTarget); }
  • 12. COPYRIGHT 2015 @ UNITY TECHNOLOGIES BuildAssetBundleOptions • IngoreTypeTreeChanges(New!)   タイプツリーが変わっても無視 =ソースコード変更しても変化したとみなされない • DisableWriteTypeTree タイプツリー自体を削除(サイズ削減用途として) (こちらをオンにしてIngoreTypeTreeChangesをオンはできない) • CollectDependencies →いつでもON • DeterministicAssetBundle  →いつでもON • CompleteAssets →廃止。いつでもコンプリート • ForceRebuildAssetBundle(New!) →強制的にリビルド • AppendHashToAssetBundleName(New!)  →ハッシュを追加
  • 13. COPYRIGHT 2015 @ UNITY TECHNOLOGIES バージョン互換性について AssetBundle (Unity5.1) AssetBundle (Unity5.2) AssetBundle (Unity4.6) ⭕️❌
  • 14. COPYRIGHT 2015 @ UNITY TECHNOLOGIES バージョン互換性について • タイプツリーを持っているのであればバージョンア ップしても古いAssetBundleは使用可 • 要Unity5
  • 15. COPYRIGHT 2014 @ UNITY TECHNOLOGIES 依存関係 •Push/Pop いらない •勝手に依存関係を調べて くれる •「依存関係があるアセッ ト群を全てビルド」が必 要なくなる
  • 16. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Manifestファイルについて • Single Manifestファイル (ビルド時のフォルダ名が AB名になる) • 他の.manifestファイル →親玉。依存関係を解決できる。  ランタイムに読んで使用 →インクリメンタルビルドにだけ  関係する。  ランタイム時は読み込まない
  • 17. COPYRIGHT 2014 @ UNITY TECHNOLOGIES .manifest ファイル Asset Bundle “B”Asset Bundle “A” A.manifest • CRC • アセット名 • 依存関係 • Hash • ClassTypes B.manifest Asset Bundle “C” C.manifest
  • 18. COPYRIGHT 2014 @ UNITY TECHNOLOGIES Single Manifestファイル Single Manifest C.manifest A.manifest B.manifest D.manifest •全AssetBundle名 •Assetの依存関係
  • 19. COPYRIGHT 2014 @ UNITY TECHNOLOGIES Variantとは • HDとSDを同じアセットとして扱える仕組 み • 例: ロースペックなスマホではSD、ハイ スペックならHDで表示 • エディタ右下で設定 • 設定しているアセットと設定していないア セットを混ぜてはいけない • 違うABで同じVariantも設定可 SD HD ★を出して SD モード
  • 20. COPYRIGHT 2015 @ UNITY TECHNOLOGIES 新しいAssetロード方式
  • 21. COPYRIGHT 2014 @ UNITY TECHNOLOGIES まずは ざっくり
  • 22. COPYRIGHT 2014 @ UNITY TECHNOLOGIES サンプルプロジェクトを使おう • サンプルプロジェクトをDL • http://files.unity3d.com/vincent/assetbundle-demo/users_assetbundle-demo.zip • サンプルシーン • AssetLoader(Assetロードのサンプル) • SceneLoader(シーンロードのサンプル) • VariantLoader(Variantのサンプル) • スクリプト • AssetBundleManager.cs (マネージャークラス) • BaseLoader.cs (基本ローダー)
  • 23. COPYRIGHT 2014 @ UNITY TECHNOLOGIES ちょっと 深く掘り下げ
  • 24. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs • AssetBundle取り扱いクラスのサンプル • 機能 1.ABの基本的なロードの仕組み 2.依存関係の解消 3.エディタシミュレーション 4.Variantsを使った切り替え
  • 25. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  1. 基本ロードの仕組み LoadAssetAsync request.GetAsset AssetBundleManager.cs Baseloader.cs キュー キュー キュー request Done! LoadAssetBundle WWW発行 キュー AB名
  • 26. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  1. 基本ロードの仕組み 1.アプリ側からLoadAssetAsyncを呼び出される 2.LoadAssetBundleInternalで WWW.LoadFromCacheOrDownloadを発行して m_DownloadingWWWsにキューを突っ込む 3.Updateでキューを回して、終わったらDispose 4.依存関係のロードも
  • 27. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  2. 依存関係の解消 AssetBundleManager.cs LoadAssetBundle AssetBundleManifest AB名 この ABに依存する、全て のABをくれ 依存AssetBundle1 依存AssetBundle2 依存AssetBundle3 Done! Done! Done! ロード ロード ロード
  • 28. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  2. 依存関係の解消 1. m_AssetBundleManifest.GetAllDependencies(abName) で依 存しているAB名を取得 2. 1で取得したABをLoadAssetBundleInternalでロード
  • 29. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  3. エディタシミュレーション LoadAssetAsync request.GetAsset AssetBundleManager.cs Baseloader.cs request AB名 AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName
  • 30. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  3. エディタシミュレーション 1. エディタ上で可否をトグル 2. Initialize,LoadAssetBundle,UnloadAssetBundleを何もしないで 返す 3. LoadAssetAsyncでは AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName でアセットパスを取得して、そこからアセットを取り出す 4. いかにもロードしているかのように返す
  • 31. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  4. Variantsを使った切り替え AssetBundleManager.cs LoadAssetBundle RemapVariantName StarObj.sdStarObj.hd SD AssetBundleManifest 設定 していたVariant を付加 Kamen.sd Yaranai.sd StarObj.sd Kamen.hd Yaranai.hd StarObj.hd 一致する 名前を検索
  • 32. COPYRIGHT 2015 @ UNITY TECHNOLOGIES AssetBundleManager.cs  4. Variantsを使った切り替え 1.m_AssetBundleManifest.GetAllAssetBundlesWithVariant で 全Variant付きABを取得 2. 1から該当のアセットバンドル名を検索 3. 最後のvariant文字列(.hd/.sd)を差し替えてアセットバンド ル名を返す
  • 33. COPYRIGHT 2015 @ UNITY TECHNOLOGIES デモ • https://github.com/makoto-unity/NewAssetBundleSample/ • ジュエルセイバーFREE
  • 34. COPYRIGHT 2015 @ UNITY TECHNOLOGIES ビルドHack
  • 35. COPYRIGHT 2014 @ UNITY TECHNOLOGIES ところで AssetBundleビルド 時間かかりません?
  • 36. COPYRIGHT 2014 @ UNITY TECHNOLOGIES そんな あなたのための いいHack
  • 37. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Projectの コピー4 Projectの コピー3 Project マルチプロセスビルドHack • 何個もビルドプロセスを走ら せて、並行でビルド • 複数のプロジェクトを用意 • プロセスごとに別のプロジェ クトを使う • 最終成果物(AssetBundle)だ けを集積 Projectの コピー2 Projectの コピー1 全AssetBundle AB1 AB2 AB3 AB4
  • 38. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack • プロジェクトファイルを複数作成 • シンボリックリンク • Library, ProjectSettings フォルダをリンク • Assets はその中にあるフォルダとファイルをリンク • Tempはリンクしない
  • 39. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack • Unityはバッチモードを使う • Unity -quit -batchmode -projectPath [path] -executeMethod BuildScript.BuildAssetBundlesBatch • ビルドするAssetBundleは分担を分ける • 例:100個あるABのうち、1~25はプロセス1、26∼50 はプロセス2…
  • 40. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack rm -rf $2 mkdir $2 cd $2 ln -s ../$1/AssetBundles . ln -s ../$1/Library . ln -s ../$1/ProjectSettings . mkdir Assets cd Assets ln -s ../../$1/Assets/* . /Applications/Unity5_Latest/Unity.app/Contents/MacOS/Unity -quit -batchmode - projectPath /Users/makoto/Unity/GitHub/$2 -logFile /Users/makoto/Unity/ GitHub/tmp.log -executeMethod BuildScript.BuildAssetBundlesBatch $3 $4 • 用法:ABBuildScript.bat [src] [dst] [from] [to] ビルドスクリプトの例
  • 41. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack public static void BuildAssetBundlesBatch() { // Choose the output path according to the build target. string outputPath = Path.Combine(kAssetBundlesOutputPath, BaseLoader.GetPlatformFolderForAssetBundles(EditorUserBuildSettings.activeBuildTarget) ); if (!Directory.Exists(outputPath) ) Directory.CreateDirectory (outputPath); string [] args = System.Environment.GetCommandLineArgs(); int startRatio = int.Parse(args[9]); int endRatio = int.Parse(args[10]); string [] allAssetBundleNames = AssetDatabase.GetAllAssetBundleNames(); int counter = allAssetBundleNames.Length * startRatio / 100; int counter_end = allAssetBundleNames.Length * endRatio / 100; AssetBundleBuild[] buildMap = new AssetBundleBuild[counter_end - counter]; int num = 0; for( int i=counter ; i<counter_end ; i++ ) { string abname = allAssetBundleNames[i]; buildMap[num].assetBundleName = abname; buildMap[num].assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(abname); num++; } BuildPipeline.BuildAssetBundles (outputPath, buildMap, 0, EditorUserBuildSettings.activeBuildTarget); } BuildScript.cs
  • 42. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack • 結果! • x1 16:16 • x2 8:12 • x4 5:03 • x5 4:43 • x8 3:26 (MacBookPro Retinaコア4) •ほぼ比例して時間短縮できる
  • 43. COPYRIGHT 2015 @ UNITY TECHNOLOGIES マルチプロセスビルドHack • 注意点 • 未来永劫使えるとも限らない! • そもそもUnityのAssetBundleビルドがマルチスレッド 化すればいいのでは… • 運用には自己責任で…
  • 44. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES ビルド
  • 45. COPYRIGHT 2015 @ UNITY TECHNOLOGIES ビルドの変更点 • IL2CPP • 64bit対応のため • ビルドサイズ問題は? →まさに今、対応中 • Use IL2CPP precompiled header • Xcodeビルド時間短縮(例: 63sec→54sec) • Prebake Collision Meshes • 事前にMeshColliderの計算をしておく • サイズが若干大きくなるトレードオフ
  • 46. COPYRIGHT 2015 @ UNITY TECHNOLOGIES UnityEditor.iOS.Xcode • 待望のXcodeプロジェクトを直接編集可能に! • frameworkの追加/コンパイルオプションの追加/lib,headerパ スの追加 • ドキュメントがまだない • https://bitbucket.org/Unity-Technologies/iosnativecodesamples/ src/a0bc90e7d6358e456caf25d717134864218740a7/ NativeIntegration/Misc/UpdateXcodeProject/Assets/Editor/ XcodeProjectUpdater.cs?at=stable • http://bit.ly/1CSDBYo (短縮URL)
  • 47. COPYRIGHT 2015 @ UNITY TECHNOLOGIES UnityEditor.iOS.Xcode [PostProcessBuild] public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string target = proj.TargetGuidByName("Unity-iPhone"); // こうやって他frameworkとかを追加 CopyAndReplaceDirectory("Assets/OpenCVForUnity/iOSforXcode/opencv2.framework", Path.Combine(path, "Frameworks/opencv2.framework")); proj.AddFileToBuild(target, proj.AddFile("Frameworks/opencv2.framework", "Frameworks/opencv2.framework", PBXSourceTree.Source)); File.WriteAllText(projPath, proj.WriteToString()); } } http://bit.ly/1CSDBYo
  • 48. COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES Plug-in
  • 49. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Plug-in の変更点 • Plugins フォルダ以外でも追加可能 • それぞれを個別で選択可能 • 重複も可能()
  • 50. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Plug-in の変更点 • 依存するFrameworkを選択可 • コンパイルオプションを設定可
  • 51. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Plug-in の変更点 • 「全部再設定しなくちゃいけないの?」 →インポート時に Plugins/iOS/ に置けば自動的に認識 • 「画像とかPluginとして認識されないけど」 → Plugins フォルダに置きましょう
  • 52. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Native Code Plug-in (復習) [DllImport("__Internal")] private static extern void callNativeFunc(); void callNativeFunc() { [[TheNativeClass instance] theFunc]; } @implementation TheNativeClass static TheNativeClass *instance_ = nil; + (TheNativeClass *)instance{ if (!instance_) { instance_ = [TheNativeClass new]; } return instance_; } - (void)theFunc { NSLog(@“call func”); } @end Unityからネイティブ の関数を呼び出し CからObjCを 呼び出し ObjCを呼び出し
  • 53. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Native Code Plug-in (直接呼出し型) • ObjC.cs public class ObjC { [DllImport("__Internal")] public static extern IntPtr objc_getClass (string name); [DllImport("__Internal")] public static extern IntPtr sel_registerName (string name); [DllImport("__Internal")] public static extern IntPtr objc_msgSend (IntPtr self, IntPtr op); }
  • 54. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Native Code Plug-in (直接呼出し型) IntPtr instance; IntPtr classInfo; void Start() { classInfo = ObjC.objc_getClass("TheNativeClass"); instance = ObjC.objc_msgSend(ObjC.objc_msgSend(classInfo, ObjC.sel_registerName(“alloc")), ObjC.sel_registerName("init")); } ObjCを 呼び出し @implementation TheNativeClass - (void)theFunc { NSLog(@“call func”); } @end void Update() { ObjC.objc_msgSend(instance,ObjC.sel_registerName(“theFunc")); } ObjCを 直接呼んで instance生成 ObjC関数を 直接呼び出し
  • 55. COPYRIGHT 2015 @ UNITY TECHNOLOGIES Native Code Plug-in (直接呼出し型) • 利点 • C → ObjCの橋渡し部分のコードを書かなくても良い • Singletonを使わない • 注意点 • 引数が使えない • http://tsubakit1.hateblo.jp/entry/2014/08/14/022012