在原生APP中集成Unity容器

2.选择要导出的平台,这里选择iOS,然后点击右下角的"Switch Plateform"按钮,然后点击上面的“Add Open Scenes”添加场景
3.点击“Build”,导出iOS项目


- __attribute__ ((visibility("default")))
- @interface FrameworkLibAPI : NSObject
- // call it any time after UnityFrameworkLoad to set object implementing NativeCallsProtocol methods
- +(void) registerAPIforNativeCalls:(id<NativeCallsProtocol>) aApi;
- @end
- @implementation FrameworkLibAPI
- id<NativeCallsProtocol> api = NULL;
- +(void) registerAPIforNativeCalls:(id<NativeCallsProtocol>) aApi
- {
- api = aApi;
- }
- @end
- extern "C" {
- void showHostMainWindow(const char* color) { return [api showHostMainWindow:[NSString stringWithUTF8String:color]]; }
- }
- - (void)initUnity
- {
- [self setUfw: UnityFrameworkLoad()];
- // Set UnityFramework target for Unity-iPhone/Data folder to make Data part of a UnityFramework.framework and uncomment call to setDataBundleId
- // ODR is not supported in this case, ( if you need embedded and ODR you need to copy data )
- [[self ufw] setDataBundleId: "com.unity3d.framework"];
- [[self ufw] registerFrameworkListener: self];
- [NSClassFromString(@"FrameworkLibAPI") registerAPIforNativeCalls:self];
- }
- #if UNITY_IOS || UNITY_TVOS
- public class NativeAPI {
- [DllImport("__Internal")]
- public static extern void showHostMainWindow(string lastStringColor);
- }
- #endif
- void OnGUI()
- {
- GUIStyle style = new GUIStyle("button");
- style.fontSize = 45;
- if (GUI.Button(new Rect(10, 300, 600, 100), "Show Main With Color", style)) showHostMainWindow();
- }
- void showHostMainWindow()
- {
- #if UNITY_ANDROID
- try
- {
- AndroidJavaClass jc = new AndroidJavaClass("com.unity.mynativeapp.SharedClass");
- jc.CallStatic("showMainActivity", lastStringColor);
- } catch(Exception e)
- {
- appendToText("Exception during showHostMainWindow");
- appendToText(e.Message);
- }
- #elif UNITY_IOS || UNITY_TVOS
- NativeAPI.showHostMainWindow(lastStringColor);
- #endif
- }
- self.btnSendMsg = [UIButton buttonWithType: UIButtonTypeSystem];
- [self.btnSendMsg setTitle: @"Send Msg" forState: UIControlStateNormal];
- [self.btnSendMsg addTarget: self action: @selector(sendMsgToUnity) forControlEvents: UIControlEventPrimaryActionTriggered];
- - (void)sendMsgToUnity
- {
- [[self ufw] sendMessageToGOWithName: "Cube" functionName: "ChangeColor" message: "yellow"];
- }
- /*
- goName: 场景中的游戏物体GameObject
- name: 这个游戏物体挂载的脚本中的一个方法
- msg: 参数
- */
- - (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg
- {
- UnitySendMessage(goName, name, msg);
- }
- void UnitySendMessage(const char* obj, const char* method, const char* msg);
- string lastStringColor = "";
- void ChangeColor(string newColor)
- {
- appendToText( "Changing Color to " + newColor );
- lastStringColor = newColor;
- if (newColor == "red") GetComponent<Renderer>().material.color = Color.red;
- else if (newColor == "blue") GetComponent<Renderer>().material.color = Color.blue;
- else if (newColor == "yellow") GetComponent<Renderer>().material.color = Color.yellow;
- else GetComponent<Renderer>().material.color = Color.black;
- }
在原生APP中集成Unity容器的更多相关文章
- iOS原生项目中集成React Native
1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...
- 怎么在我们的App中集成条码扫描功能?
现在很多App都有条码扫描功能,有的手机比如某米在照相机中集成了条码扫描功能,但是还有一部分手机没有这样的集成,比如韩国某星,需要自己下载一个条码扫描App.今天我们就来看看怎么在自己的App中集成一 ...
- APICloud原生APP中ajax需要用api.ajax
报错截屏: APICloud原生APP中ajax请求需要用api.ajax(api对象的ajax方法来替代),否则会将引起请求失败. APICloud api.ajax
- c#中的Unity容器
DIP是依赖倒置原则:一种软件架构设计的原则(抽象概念).依赖于抽象不依赖于细节 IOC即为控制反转(Inversion of Control):传统开发,上端依赖(调用/指定)下端对象,会有依赖,把 ...
- 在APP中集成iAd Banner展示广告盈利
如果你已经做了一款超牛X的APP.你也许还有一件是需要操心.APP够好了,怎么盈利呢?你可以对下载你的APP的用户收费.也可以完全的免费,然后在APP里放广告来实现盈利.现在来说,除非一款APP真的是 ...
- 在Android App中集成Google登录
技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...
- 如何在WCF中集成unity
第一种是代码方式: 点击打开链接http://blogs.microsoft.co.il/gadib/2010/11/30/wcf-and-unity-20/ 还有一种方式可以扩展成配置文件,有时间再 ...
- RN与现有的原生app集成
https://facebook.github.io/react-native/docs/integration-with-existing-apps.html RN可以很好地支持往一个原生的app上 ...
- 转发-UI基础教程 – 原生App切图的那些事儿
UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...
- 原生App切图的那些事儿
如何切图? 了解iphone界面的尺寸 最小的分辨率是320x480,我们把这个尺寸定为基准界面尺寸(baseline),基准尺寸所用的图标定为1倍图(1x). 在实际设计过程中,为了降低设计成本,一 ...
随机推荐
- 2021-05-25:给定一个矩阵matrix,值有正、负、
2021-05-25:给定一个矩阵matrix,值有正.负.0,蛇可以空降到最左列的任何一个位置,初始增长值是0,蛇每一步可以选择右上.右.右下三个方向的任何一个前进,沿途的数字累加起来,作为增长值: ...
- 2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。
2021-08-16:回文对.给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串. 福大大 答案20 ...
- 2021-10-30:有效的字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位
2021-10-30:有效的字母异位词.给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词.注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位 ...
- 2021-09-18:给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合
2021-09-18:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效.有效字符串需满足:左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合 ...
- python 之路,Django rest framework 初探
摘自 金角大王 https://www.cnblogs.com/alex3714/articles/7131523.html Django rest framework介绍 Django REST ...
- AcWing 1024. 装箱问题
有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数). 要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式 第一行是一个整数 V,表示箱子容量. 第二行是一个 ...
- SpringBoot配置文件加载
Spring Boot 配置文件加载是通过 Spring Boot 的自动配置机制实现的,它可以根据不同的环境加载不同的配置文件,包括 application.properties.applicati ...
- R数据分析:多项式回归与响应面分析的理解与实操
今天给大家分享一个新的统计方法,叫做响应面分析,响应面分析是用来探究变量一致性假设的(Congruence hypotheses).本身是一个工程学方法,目前在组织行为学,管理,市场营销等等领域中使用 ...
- ChatGPT 问答
Win32GUI编程时,创建窗口触发消息的顺序 在Win32 GUI编程中,创建窗口并显示到屏幕上时,系统会触发一系列的消息,这些消息可以用来完成窗口的初始化和其他相关的工作.下面是创建窗口触发消息的 ...
- 在Transformers 中使用约束波束搜索引导文本生成
引言 本文假设读者已经熟悉文本生成领域波束搜索相关的背景知识,具体可参见博文 如何生成文本: 通过 Transformers 用不同的解码方法生成文本. 与普通的波束搜索不同,约束 波束搜索允许我们控 ...