• 使用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版本,所以也没有上代码。

  • 相关阅读:
    Kafka 消费者及消费者分区策略
    c++与c
    Exactly Once 语义
    如何在CentOS 8服务器上安装FreeIPA身份和授权解决方案?
    如何在Linux Mint 20上安装Wine
    如何在Ubuntu 20.04 LTS服务器上安装Wireguard
    如何在Ubuntu 20.04 LTS服务器上安装Apache JMeter
    如何在Linux服务器中使用SAR命令
    MongoDB是什么,它是如何工作的?
    如何在Ubuntu 20.04 LTS上安装SSH服务器
  • 原文地址:https://www.cnblogs.com/vsirWaiter/p/16318818.html
Copyright © 2020-2023  润新知