查看: 5665|回复: 0
打印 上一主题 下一主题

[经验分享] Unity3D技术之Android两个工程的合并详解

[复制链接]

100

主题

3

听众

7683

积分

高级设计师

Rank: 6Rank: 6

纳金币
2378
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-2-15 16:31:55 |只看该作者 |倒序浏览
之前QQ上有好多朋友都问过我unity做插件怎么把两个工程合并在一起。。其实很多unity开发者是没做过android和IOS源生开发的,所以在做SDK这块就有点力不从心。这两天刚好有点空我就把我合并Android工程的经验分享出来。

1.游戏包名( 类似 com.xx.xxx )

Android应用程序只能有一个包名,如果两个游戏包名一样,那么后者安装后会覆盖了前者。如下图所示,在ProjectSetting里面Bundle Identifier* 就是了。




不同渠道的包名不能相同,所以用shell自动打包的时候,可以先自动在unity里面设置你的游戏包名。这个游戏包名特别容易和你自己写的java.class混淆或者和sdk的包名混淆。。

2.Activity和View是啥区别?

这就要从游戏开发和软件开发的区别说起了。软件开发中每个界面就是一个Activity。比如我们玩的微博、微信一类的软件、每当你点击某个按钮切换界面的时候,其实就是新开了一个Activity,界面上的按钮啊 图标、输入框等等、所有显示单位都是一个View。一个软件程序随随便便10几20个Activity,每一个Activity上面会放很多不同的view。

而游戏开发,只有一个Activity、并且这个Activity上面只有一个View。游戏中的所有控件都是靠我们自己用代码来写成的。自己写的肯定没有源生的效果好了,举个例子你会发现为软件程序的列表滚动要比游戏里的列表滚动舒服很多,呵呵。

扯远了~

3.MainActivity

每个Android应用程序都需要一个启动的Activity。也就是在手机里你点了一个游戏的icon这时候打开游戏,弹出的第一个Activity。

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
    package=”com.yusong.momo” >
    <application
        android:allowBackup=”true”
        android:icon=”@drawable/ic_launcher”
        android:label=”@string/app_name” >
        <activity
            android:name=”com.yusong.momo.MainActivity”
            android:label=”@string/app_name” >
            <intent-filter>
                <action android:name=”android.intent.action.MAIN” />
                <category android:name=”android.intent.category.LAUNCHER” />
            </intent-filter>
        </activity>
    </application>
</manifest>
package:就是包名前面我们说了android每个应用程序有且只能有一个包名。


每一个Activity都要在“<activity /activity> ”中间预先声明。还要设置一个MainActivity,因为我们就一个Activity所以这里就设置它为MainActivity,也就是下面这两句。


<intent-filter>
< action android:name=”android.intent.action.MAIN” />  //表示该Activity是MainActivity。
<category android:name=”android.intent.category.LAUNCHER” />//表示在手机上点击游戏图标弹出该Activity
< /intent-filter>


如果你有两个MinActivity就必须将他们合并成一个,或者只能保留一个MainActivity了。


4.MainActivity和AndroidManifest怎么写


具体可以参考unity的模板、unity.app->显示包内容->Contents->playbackEngines->AndroidPlayer


AndroidManifest.xml


还有com/unity3d/player/ UnityPlayerNativeActivity.java


最好参考模板来写。


5.我有两个包怎么合并?


src下面一般是com/xxx/xxx/Mainactivity.java这样的结构。


com/xxx/xxx可以和你的游戏包名不同。


6.C#调用java


C#调用Activtiy.游戏只有一个Activity不存在多个。就算项目真有多个activity,一旦打开它会盖住你的unity的activity的。这部分逻辑可以在java部分完成。。


MainActivtiy.java里面有一个Purchase的方法,并且接收一个参数, 一般就是 int float string bool 等。


AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>(“currentActivity”);
jo.Call(“purchase”, productId);
C#调用静态类,静态方法。com.yusong.momo 下面放了一个staticClass的静态类。SetConfig就是它的静态方法。
AndroidJavaClass jc = new AndroidJavaClass(“com.yusong.momo.staticClass”);
jc.CallStatic(“SetConfig”, id);
好了就这么多了。



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-24 12:26 , Processed in 0.226775 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部