test

一些相关知识:

1,
unity3d android 包入口默认类UnityPlayerActivity与UnityPlayerNativeActivity
5.X以上版本 导出apk安装包的默认入口类名字为 com.unity3d.player.UnityPlayerActivity
5.X以下的版本(亲验证4.6.3)的入口类名字则为 com.unity3d.player.UnityPlayerNativeActivity
//AndroidJNI 来自Mono的Android VM的'原始'JNI接口。
AndroidJNI.AttachCurrentThread();//将当前线程附加到Java(Dalvik)VM。
AndroidJavaClass cls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
m_AJO = cls.GetStatic<AndroidJavaObject>("currentActivity");
m_DataDir = m_AJO.Call<string>("getDataPath");

AndroidJavaClass只能调用静态方法,获取静态属性
AndroidJavaObject能调用公开方法和公开属性
另外,jar文件,不一定非要放在plugins/android目录下。

Unity调用自定义Jar:https://blog.youkuaiyun.com/glunoy/article/details/76638929


1.使用Application.persistentDataPath来操作文件(荐)
本文来自 oldherowang 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/oldherowang/article/details/78578796?utm_source=copy 
1.通过服务器直接下载保存到该位置,也可以通过Md5码比对下载更新新的资源
2.没有服务器的,只有间接通过文件流的方式从本地读取并写入Application.persistentDataPath文件下,然后再通过Application.persistentDataPath来读取操作。
注:在Pc/Mac电脑以及android跟Ipad、ipone都可对文件进行任意操作,另外在IOS上该目录下的东西可以被iCloud自动备份。

 

概略概述:

一个游戏的开头固定有2种行为,第1种:入口和一个while循环。第2种:解压资源,检查更新,初始化环境。
第1个开头包含:
基本设置:
Application.targetFrameRate = 30;
QualitySettings.vSyncCount = 0;--使用0为不等待垂直同步。值必须是0,1或2。
Screen.sleepTimeout = SleepTimeout.NeverSleep; 省电设置,最后活跃用户交互之后,过一些时间,使屏幕变暗。sleepTimeout以秒计算,0表示不睡眠。默认
基本操作:
log(打印相关),平台(不同平台不同的有,文件路径规则,sdk,验证信息,声音,),计时器(之后即使有操作也直接放在计时器里)
设置纹理shader

第2步无限循环:
1,在FixUpadte刷新所有的人物管理器,在LateUpdate刷新人物动作事件行为。
2,在update中分一定会执行的是计时器。
在update中分几帧依次处理,init,initsdk,initload,检查更新等,将相关的管理器统一初始化好,包括lua。
在update中,前几帧初始化完成之后,之后每帧都调用所有管理器的update函数。
3,在LateUpdate刷新摄像机行为。人物动作事件行为。ui相关管理,切换场景相关管理。

第3步,在所有的东西都初始化完成之后,才开始解压,进入游戏。

-------------------------------------------------------------------
Lua处理部分:
1,一次性注册所有需要的函数,LuaScripteManager.Instance.Init()
2,调用第一个lua函数,将平台,文件地址等必要信息传入,GameClient.init,包含如下:
3,在C#中循环调用Lua函数LuaNetwork.processHandle,但是有一个控制,在特殊情况下打开控制。
4,在C#中循环调用Lua函数GameClient.update

 

 

 

 

 

 

 

 

 

在编程中,`void test` 通常表示一个返回值类型为 `void`(即不返回任何值)且函数名为 `test` 的函数。以下以几种常见编程语言为例介绍其含义及应用: ### C/C++ 在 C 和 C++ 中,`void` 用于表示函数不返回任何值。`void test()` 可以定义一个名为 `test` 的函数,这个函数不返回值,常用于执行一些操作,比如打印信息、修改全局变量等。 ```c #include <stdio.h> // 定义一个返回值为 void 的 test 函数 void test() { printf("This is a test function.\n"); } int main() { test(); return 0; } ``` ### Java 在 Java 中,`void` 同样用于表示方法不返回任何值。可以定义一个名为 `test` 的方法来执行特定任务。 ```java public class Main { // 定义一个返回值为 void 的 test 方法 public static void test() { System.out.println("This is a test method."); } public static void main(String[] args) { test(); } } ``` ### Python Python 没有显式的 `void` 类型,因为函数不返回值时默认返回 `None`。可以定义一个名为 `test` 的函数来执行特定操作。 ```python def test(): print("This is a test function.") test() ``` ### 错误处理 在使用 `void test` 函数时,错误处理也很重要。在 C++ 中,可以使用异常处理机制;在 Java 中,有 `try-catch` 语句;Python 则使用 `try-except` 语句。 以下是 Java 中 `void test` 函数的错误处理示例: ```java public class Main { public static void test() { try { int[] arr = new int[2]; arr[3] = 10; // 会引发数组越界异常 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("An error occurred: " + e.getMessage()); } } public static void main(String[] args) { test(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值