使用Android发布Unity无法破解的问题

没破解,也没购买正版,也没有交钱。

使用UnityHub登陆的版本破解没有成功过。

------------------------------------------------

那Android版本的处理方式:

1、原理:

Unity的activity本身会对应一个View,那么我们就创建一个新的View,并置于Unity的上层。

也就是在Android的那个UnityActivity加载之后去创建(写在OnCreate方法的最末尾)。

待到Unity的Awake执行完后,我们在Start里去关闭这个用来覆盖的View。

2、UnityActivity中的代码如下:

第一步:

public static FrameLayout gameAdvice;
//设置一个View类型(使用FramLayout类型来存)的变量用来存储覆盖UnityView的那个View。

第二步:

  动态创建View的方法:

public static void SetGameAdvice()
{
gameAdvice = new FrameLayout(app);//app为当前的Activity的单例。
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
//创建一个LayoutParams,用于设置gameAdvice的参数

layoutParams.gravity = Gravity.CENTER ;
int w = UIUtils.getScreenWidth(app);
int h = UIUtils.getScreenHeight(app);
layoutParams.height= h + 300;// 设置比UnityView的宽再宽300
layoutParams.width= w + 300 ;//设置比UnityView的宽再高300
gameAdvice.setLayoutParams(layoutParams);
gameAdvice.setBackgroundColor(Color.parseColor("#000000"));//设置颜色为黑色,与UnityLog动画的背景色一致。
TextView textView = new TextView(app);
String s1 = " 健康游戏忠告 \r\n抵制不良游戏,拒绝盗版游戏。\r\n注意自我保护,谨防受骗上当。\r\n适度游戏益脑,沉迷游戏伤身。\r\n合理安排时间,享受健康生活。";
//正好这个2秒的show动画用健康游戏忠告来取代,一点也不违和。
textView.setText(s1); //Html.fromHtml(s1)
textView.setTextColor(Color.WHITE);
textView.setTextSize(20);
textView.setGravity(Gravity.CENTER );
textView.setSingleLine(false);
textView.setWidth(w - 800);
textView.setHeight(800);
textView.setVisibility(View.VISIBLE);

gameAdvice.addView(textView);//将Android的Text的文字控件填进这个View

gameAdvice.setVisibility(View.VISIBLE);
ViewGroup rootGroup = app.findViewById(android.R.id.content);
rootGroup.addView(gameAdvice);
}

第三步:

  Unity的Start方法执行后调用安卓的方法:

public static void CloseGameAdvice()
{
app.runOnUiThread(new Runnable() {
public void run() {
ViewGroup rootGroup = app.findViewById(android.R.id.content);
if (gameAdvice != null) {
rootGroup.removeView(gameAdvice);
}
else
{
}
}
});
}

完成。

注意事项:

1、因为在Unity中操作不是当前activity自己的View,所以不能直接调,需要如下跳板

runOnUiThread

2、用来覆盖的View必须置于顶层,如果你使用的无效,要检查是否在顶层。

----------------------------------------------

IOS也有类似的方式,因为现在不做IOS版本,所以也没有上代码。

posted @ 2022-05-27 19:02  威少小二orz  阅读(184)  评论(0编辑  收藏  举报