Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
製作 Unity Plugin for Android
Search
Johnny Sung
September 25, 2014
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
製作 Unity Plugin for Android
製作 Unity Plugin for Android
自從上次講的iOS版本了之後,不講一下Android怎麼可以XD
2014.09.25 @ Android Taipei
Johnny Sung
September 25, 2014
More Decks by Johnny Sung
See All by Johnny Sung
Escape RCA Writing Hell: Using MCP to Let AI Handle the Last Mile of Operations 告別 RCA 撰寫地獄:利用 MCP 讓 AI 替你完成維運最後一哩路 @ DevOpsDays 2026
j796160836
0
97
ArgoCD 新手村:告別手動部署,從 0 到 1 打造自動化部署路徑 @ CNTUG meetup #73
j796160836
0
51
CI/CD 落地指南:用開源 Jenkins & Ansible 打造自動化部署平台 @ DevOps Taiwan Meetup #76
j796160836
0
43
全端 AI 實戰:Gemini x Antigravity 快速開發與 PentestGPT 滲透攻防實務
j796160836
0
88
Event Driven Ansible (EDA) 使用情境分享 @ Red Hat Ansible User Club 線上交流會
j796160836
0
50
用 Gemma 3 開放模型來解決企業難解的問題 @ COSCUP 2025
j796160836
0
72
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
j796160836
0
69
Kubernetes 地端自建 v.s. GKE,哪個更適合你? @Devfest Taipei 2024
j796160836
0
120
地端自建 Kubernetes (K8s) 小宇宙 (On-premises Kubernetes) @ CNTUG 2024/11 Meetup #63
j796160836
0
84
Other Decks in Technology
See All in Technology
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
3
1.6k
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
4
180
AI de Idea
kawaguti
PRO
2
120
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
GoにおけるFFIのこれまでとこれから
goccy
5
3.6k
HHKBエバンジェリストになる方法
941
0
110
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.6k
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
2.7k
20260912_スクフェス三河
kgnkhkr
0
380
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
290
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
New Earth Scene 8
popppiees
4
2.6k
Building an army of robots
kneath
307
46k
Chasing Engaging Ingredients in Design
codingconduct
0
310
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
How to Ace a Technical Interview
jacobian
281
24k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
Crafting Experiences
bethany
1
340
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Transcript
製作 Unity Plugin for Android Johnny Sung 2014.09.24 @ Android
Taipei
荈䖰$PDPB)FBE5BJQFJ ⴕ ٰڅù ❧ ٹډö ✫⛓䖕
ّ∣ὕ҂ấĆ ሱ࠭ᾣ
https://fb.com/j796160836 Johnny Sung Mobile devices Developer https://plus.google.com/+JohnnySung http://about.me/j796160836 Mobile devices
Developer https://plus.google.com/+JohnnySung http://about.me/j796160836
Agenda 6OJUZۀ∻ᾏࢺ (BNF0CKFDU $PNQPOFOU "OESPJE1MVHJOℯቔ "OESPJEࢤ१ $ࢤ१ ẵσյЇ٢ᇂ֥ᇿၩ൙⇊
6OJUZ僽➊랃 %䵔↰ႄౣ ္ॖၛ⇔%(BNF ಆ౯"QQ䵔↰㍇Ⴈ +BWB4DSJQU$#00 ቨℸル֥ॴ https://unity3d.com/unity/multiplatform http://www.moneydj.com/kmdj/news/NewsViewer.aspx?a=f4767522-2281-4d16-8ed0-99c6acb797f8
X .POPEFWFMPQ
6OJUZ涸嚌䙂 GameObject Component
GameObject GameObject
GameObject Component
♧⦐瑠涯涸$PNQPOFOUꟀ鸏垺 using UnityEngine; using System.Collections; public class testComponent :
MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
.POP#FIBWJPVS涸欰ㄐ鹋劍 "XBLF ⶾ鸤儘ⴲ㨥⻋ 4UBSU 㛂遤儘ⴲ㨥⻋ 6QEBUF 粭㕮鶬㕖 ⣜佪腋罜㹁⢿GQT 'JYFE6QEBUF
暟椚鶬㕖
None
http://docs.unity3d.com/ScriptReference/
C# AndroidJavaClass AndroidJavaObject Java Java UnitySendMessage() C# (對應的接⼝口) (Unity Engine)
(Native) 6OJUZ1MVHJO涸ㄎ〭倰䒭
"OESPJE畮彋⪔ 倞"OESPJEQSPKFDU 䒸欽DMBTTFTKBS PQUJPOBM 之㻨玑䒭
/Applications/Unity/Unity.app/Contents/ PlaybackEngines/AndroidPlayer/development/bin classes.jar 檔案位置 Mac C:\Program Files (x86)\Unity\Editor\Data\ PlaybackEngines\androidplayer\development\bin Windows
(optional)
6OJUZㄎ〭"OESPJE涸侸 AndroidJavaClass AndroidJavaObject
h"p://docs.unity3d.com/ScriptReference/AndroidJavaObject.html
AndroidJavaObject Call() CallStatic() Get() GetStatic() SetStatic()
h"p://docs.unity3d.com/ScriptReference/AndroidJavaObject.Call.html
package com.example.unitytest; ! public class Pet { private int id;
private String name; ! public void setId(int id) { this.id = id; } ! public void setName(String name) { this.name = name; } ! @Override public String toString() { return "Pet [id=" + id + ", name=" + name + "]"; } ! } ♧⦐矦㋲涸眕⢿
AndroidJavaObject obj = new AndroidJavaObject ("com.example.unitytest.Pet"); obj.Call ("setId", 123); obj.Call
("setName", "Lucky"); string str = obj.Call<string> ("toString"); Debug.Log (str); Pet obj = new Pet(); obj.setId(123); obj.setName("Lucky"); String str=obj.toString(); Log.v("Unity", str); Java C# ♧⦐矦㋲涸眕⢿
try { UnityPlayer.UnitySendMessage(gameObject, method, message); } catch(Exception e) { Log.e("Unity",
"UnitySendMessage failed" + e.getMessage()); } ꡠ倴6OJUZ4FOE.FTTBHF GameObject Name Method Name Parameter
C# 䱺佐 ꡠ倴6OJUZ4FOE.FTTBHF public void CallFromObjC(string message) { Debug.Log
(message); } MyViewObject.cs try { UnityPlayer.UnitySendMessage("MyGameObject", "CallFromObjC", "hello"); } catch (Exception e) { e.printStackTrace(); } Java ⫄鷑 MyPlugin.java
《䖤Activity import android.app.Activity; import com.unity3d.player.UnityPlayer; ! public class MyViewPlugin {
public static Activity getActivity() { Activity a = UnityPlayer.currentActivity; return a; } } public static AndroidJavaClass getActivity () { AndroidJavaClass player; player = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject a; a = player.GetStatic<AndroidJavaObject> (“currentActivity"); return a; } C# Java
package com.unity3d.player; ! public class UnityPlayerNativeActivity extends NativeActivity { //
don't change the name of this variable; referenced from native code protected UnityPlayer mUnityPlayer; ! // Setup activity layout @Override protected void onCreate (Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); ! getWindow().takeSurface(null); setTheme(android.R.style.Theme_NoTitleBar_Fullscreen); getWindow().setFormat(PixelFormat.RGB_565); ! mUnityPlayer = new UnityPlayer(this); if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true)) getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); ! setContentView(mUnityPlayer); mUnityPlayer.requestFocus(); } ! // Quit Unity @Override protected void onDestroy () { mUnityPlayer.quit(); super.onDestroy(); } ! // … UnityPlayerNativeActivity.java
糒䪭㸐 package com.example.unitytest; ! import android.os.Bundle; ! import com.unity3d.player.UnityPlayerNativeActivity; !
public class MainActivity extends UnityPlayerNativeActivity { ! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } ! }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.unitytest" android:theme="@android:style/Theme.NoTitleBar" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false"> <activity android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen| keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize| smallestScreenSize|fontScale" android:name="com.example.unitytest.UnityPlayerNativeActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" /> </activity> </application> <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="20" /> <uses-feature android:glEsVersion="0x00020000" /> </manifest> AndroidManifest.xml 岤䠑"OESPJE.BOJGFTU
䩧⺫㛂遤
"OESPJE畮䩧⺫ 鱒ⴀ 玑䒭焺鱒ⴀ䧭KBS "OESPJE.BOJGFTUYNM 须彂墂呪
None
յЇ℻ԛ Assets! Plugins! Android! bin! MyJar.jar! res! drawable-hdpi! drawable-ldpi! …!
layout! values! AndroidManifest.xml
յЇ℻ԛ 6OJUZ晝劥⟃♳佅䴂 ⴀ"OESPJE㼠呪
Q and A
Thanks!
佞♳"TTFU4UPSF风㢫䘰
References Unity Webview https://github.com/gree/unity-webview Building Plugins for Android http://docs.unity3d.com/Manual/PluginsForAndroid.html 藍斯洛‧雜技的雜記:
Unity3D Plug-in for Android -- Activity 擴展⽅方法 http://lancelotdiary.blogspot.tw/2012/05/unity3d-plug-in-for- android-activity.html 懂點Unity Plugin,替荷包省點錢!(安卓 Android篇) http://www.unityin.com/2013/05/%E6%87%82%E9%BB%9Eunity-plugin%EF%BC%8C %E6%9B%BF%E8%8D%B7%E5%8C%85%E7%9C%81%E9%BB%9E%E9%8C%A2%EF%BC %81%E5%AE%89%E5%8D%93-android%E7%AF%87/
Unity3D研究院之打開Activity與調⽤用JAVA代碼傳遞參數 http://www.xuanyusong.com/archives/667 Unity GPS plugin development tutorial: building a
Android plugin for Unity with Eclipse and Ant http://www.mat-d.com/site/unity-gps-plugin-development-tutorial- building-a-android-plugin-for-unity-with-eclipse-and-ant/ References
ꡠ倴Android 涸Back ꒳ public class BackKey : MonoBehaviour { void
Update() { #if UNITY_ANDROID if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); // Application.LoadLevel("PreviousLevel"); } #endif } } #BDL꒳剚㼩䥰ⵌ꒳湏涸&TD h"p://answers.unity3d.com/quesBons/25535/android-‐back-‐bu"on-‐event.html
Unity∣Ⴈ‴თ https://www.facebook.com/groups/581769871867384 想做遊戲?