精华内容
下载资源
问答
  • Unity Mono

    2014-07-21 15:06:00
    Unity的mscrolib.dll和.Net的mscrolib.dll 好奇于Unity的mscrolib.dll和.Net Framework提供的mscrolib是否一致。 .Net的mscrolib.dll 多语言标准通用对象运行时库(Microsoft Standard Common Object Runtime ...

    Unity的mscrolib.dll和.Net的mscrolib.dll

    好奇于Unity的mscrolib.dll和.Net Framework提供的mscrolib是否一致。

    .Net的mscrolib.dll

    多语言标准通用对象运行时库(Microsoft Standard Common Object Runtime Library)就是指mscrolib.dll,

    Unity的mscrolib.dll

    在Unity的安装目录下:X:\xxx\Unity_4.5.0\Editor\Data\Mono\lib\mono\2.0\ 下也有mscrolib.dll,

    Unity的流程

    在 CSDN上看到一篇文章:

    对于Unity3D来说,用到了mono框架,也就是每个脚本需要继承MonoBehavior的那个Mono。

    可能的真正流程是,

    Class Program

    {

        foreach (monobehavior; monobehavior < ; monobehavior++)

            pMono->startFrame();

        foreach()

            pMono->Update();

    }

    mono构造一个最小的.net运行环境

    本文的目的是使用mono构造一个最小的.net运行环境。

    构造一个最小.net环境的好处何在?

    第一,可以在没有.net运行库的机器上发布.net程序。

    第二,研究最小.net环境,可以将.net用于一些嵌入式操作系统。提高开发效率。

    尝试的过程,就不描述了。直接发布结果。

    1.最基本的文件依赖

    bin\mono.exe

    bin\mono-20.dll

    lib\mono\2.0\mscorlib.dll

    这三个文件是最基本的。只要有这三个文件,就可以运行控制台下的helloWorld。

    可以访问基本的IO。

    参考:用Mono构造最精简的.net运行环境

    转载于:https://www.cnblogs.com/zhaoqingqing/p/3858451.html

    展开全文
  • Unity Mono脚本 加密

    千次阅读 2016-11-08 19:48:21
    文章转载自 Unity Mono脚本 加密,感谢原作者提供好文章 个人是用虚拟机mac系统编译的mono,按照雨松大神的教程即可,转载这篇文章主要是讲解全面,可以解除很多困惑。加密环境 引擎版本:Unity3d 5.3.4 及更高...

    文章转载自 Unity Mono脚本 加密,感谢原作者提供好文章
    个人是用虚拟机mac系统编译的mono,按照雨松大神的教程即可,转载这篇文章主要是讲解全面,可以解除很多困惑。

    加密环境
    引擎版本:Unity3d 5.3.4 及更高版本 (使用Mono而并非IL2CPP)
    操作系统:CentOS 6.2(Final)
    加密环境:Android、iOS(暂定)
    加密对象:C#源代码(dll文件)
    解密方法:libmono.so (重点:加入解密算法并重编译此文件)
    加密的目地
    .NET Reflector等反编译工具 无法通过对dll反编译得到源码
    注意事项
    dll的加密算法和libmono.so解密算法一致

    思路分析
    重点:我们需要对libmono.so重编译,加入我们的解密算法。
    准备环境
    编译系统:linux或mac os
    我的编译环境:centos 6.2 Final,建议在linux或mac os中编译 libmono.so
    linux安装运行库
    git
    在编译过程中,可能需要通过git获取某些运行库。
    查看是否安装git:git –version
    CentOS7
    yum 安装git

    其它package
    autoconf
    automake
    bison
    gcc
    gettext
    glib >= 2.0
    libtool
    make
    perl
    glib >= 2.0 这个一直安装失败
    centos安装软件
    在root权限下,通过以下命令来安装软件:

    yum install [nginx][php][php-fpm][mariadb][mariadb-server][mysql][mysql-server]...

    Unity安装Android模块
    确保已安装Unity引擎,并且Android模块已安装,Android SDK已安装并更新,保证可以打包APK
    正式/测试工程
    使用Unity创建一个加密测试项目或正式项目,用来用加密
    Unity mono
    unity的mono和原生mono有些不一样,所以需要去github拉取unity的mono库

    monobuildtools
    unity mono打包工具

    Android SDK Tool/Android6.0
    我使用Unity5.3.4在windows上打包apk,需要android sdk tool版本为23,Android6.0,所以同样请先准备好环境

    Android打包工具
    Android Studio
    Eclipse
    Andmore - Eclipse Android Tooling
    android对应的NDK版本
    查看路径:external/buildscripts/build_runtime_android.sh
    https://github.com/Unity-Technologies/mono/blob/unity-5.3/external/buildscripts/build_runtime_android.sh
    在文件的上半部分就可以看到需要的NDK版本,我在2016-06-25 clone的,需要的NDK版本为r10e
    android-ndk 下载
    根据android和unity的版本不同,需要的ndk版本也不同,我这儿以2016-06-25 clone的仓库为例,需要ndk-r10e
    x64
    android-ndk-r10e-linux-x86_64.bin
    x86
    android-ndk-r10e-linux-x86.bin
    设置android ndk环境变量
    反编译工具测试加密结果.Net反编译工具
    主要加密对象是Assembly-CSharp.dll,所以可以准备几款.Net反编译工具来测试加密结果
    下面举例.net的反编译工具
    .NET Reflector
    C语言反编译工具
    如果对libmono.so也加密的话,那还需要准备几款C语言反编译工具
    下面举例C语言反编译工具
    ida pro
    官网
    libmono.so(解密方法)

    加密C#的dll
    根据自己的实际情况,对导出的 assets/bin/Data/Managed/Assembly-CSharp.dll 进行加密
    在so中解密dll
    Mono加载dll的代码的文件位于/mono/metadata/image.c
    mono_image_open_from_data_with_name
    打开image.c,找到 mono_image_open_from_data_with_name 方法,把解密方法写在这儿。此方法大概在1807行

    MonoImage *
    mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)
    {
        MonoCLIImageInfo *iinfo;
        MonoImage *image;
        char *datac;
    
        if (!data || !data_len) {
            if (status)
                *status = MONO_IMAGE_IMAGE_INVALID;
            return NULL;
        }
         //在这儿对加密过的dll进行解密
        if (strstr(name, “Assembly-CSharp.dll”) != NULL)
        {
            //这里是解密过程,我们采用的是xxtea加解密算法。
        }
    
        //.....
        return register_image (image);
    }

    遇到的问题
    AndroidManifest.xml Error
    Unity导出Android Project之后,AndroidMainifest.xml中有一行会报Error: android:debuggable=”false” ,无法识别。
    解决办法
    CentOS安装软件 Error
    在CentOS上安装一些软件时遇到:Errno 256] No more mirrors to try
    确保系统已连接网络,输入以下命令(作用:重建缓存)
    yum clean all
    yum makecache
    Linux安装ndk.bin?
    资料:Linux下安装JDK-(bin版)
    安装步骤
    以下命令都是ROOT身份运行
    1. 安装ndk-文件拷贝

    #mkdir /usr/ndk #cd /usr/ndk #cp /xxxx/android-ndk-r10e-linux-x86.bin /usr/ndk
    1. 安装ndk-安装和配置环境变量
    2. ./android-ndk-r10e-linux-x86.bin 成功后终端输出 Everything is OK
    3. 安装ndk-安装成功
    Everything is Ok
    [root@workstation ndk]# source /etc/bashrc
    [root@workstation ndk]# echo $ANDROID_NDK_ROOT
    /usr/ndk/android-ndk-r10r
    [root@workstation ndk]#

    提示要ndk9?
    查看参考资料caption的修改
    ./configure没有那个文件或目录
    查看README文件
    tar.xz安装
    Linux下解压tar.xz格式压缩文件
    资料
    安装glib
    我安装的是glib-2.48.1
    1 ./configure 2 make 3 make install
    这里configure主要是配置并生成Makefile文件,make主要是对程序进行编译,make install主要是对编译好的程序进行安装
    资料
    安装glib-提示缺少libffi
    不知道大家注意到没有,在configure时,出现缺少相关库时解决方法都可以使用 库-devel 解决,那么这个
    devel是什么呢?devel是个开发包,只有在开发程序时才会安装。里面包含了头文件、以及开发用到的相关库和
    帮助文件等等。一般安装某些工具的时候就会出现
    glib的安装
    安装glib依赖库
    libffi
    下载,解压,执行 ./configure make make install 进行安装
    libpcre >=8.13
    ./configure –with-prce=/usr/local/prec/
    tar.bz2安装
    命令:tar -xjvf xxx.tar.bz2 来解压,得到解压后的目录再进一步安装
    其它错误

    1. 文件格式错误
      /bin/bash^M: bad interpreter: 没有那个文件或目录
      方法二:在windows下用Notepad++修改格式为unix
      PKG_CONFIG_PATH environment
      如果配置 PKG_CONFIG_PATH
      Linux操作知识
      查看系统版本:
      lsb_release –a
      查看linux系统位数:
      getconf LONG_BIT 输出32则是x86,输出64则是x64
      给shell赋于root权限:
    2. 输入 su 2.输入root密码 回车
      执行脚本:chmod 700 hello.sh
      文件拷贝
      cp [选项] 源文件或目录 目标文件或目录
      访问共享文件夹
      1.virtual box设置共享文件夹
    3. 这一步是在mnt下创建share目录,可不创建
      mkdir /mnt/share
      步骤3,有两种方法
      如果你希望把共享目录放在share下,并且mnt也创建 了share目录:
      #sudo mount -t vboxsf 共享文件夹名/mnt/share ,比如我的:
      mount -t vboxsf mono/mnt/share
      你希望直接放在mnt下:
      #sudo mount -t vboxsf 共享文件夹名/mnt,比如我的:
      mount -t vboxsf mono/mnt
    4. 在 文件系统 – mnt 下就可以看到共享内容了
      cd 目录操作
      以root用户登录之后,默认是在当前用户文件夹内,往上跳到文件主目录中:cd ../../
      virtualbox 虚拟和主机粘贴板共享
    5. 从virtualbox官网下载对应版本的增加工具包,进行安装
    6. 在linux中加载工具包 ios镜像,进行安装
    7. 虚拟机和主机可以共享粘贴板内容了
      Centos安装软件
      CentOS6.X安装QQ2012
      终于可以在centos下使用QQ啦!
      Centos YUM更新软件:http://jingyan.baidu.com/article/19020a0ac84c3d529d2842ee.html
      centos安装软件:https://www.centos.org/forums/viewtopic.php?t=871 查找某一类软件:yum list Firefox
      文献资料
      Unity 自动导出 AndroidStudio 项目

    Perl语言(*.pl文件)
    perl是解释性语言, 可用于linux/unix系统。可以理解为和windows下的bat一样。
    *.pl 是perl语言的库文件,通常用 require xx.pl; 来加载
    *.pm 是perl语言的模块文件,通常用 use module; 来加载
    *.plx 是perl语言的脚本文件
    运行: ./路径/文件名 (前面的“./”表示运行命令)
    结束: ctrl + c
    注释
    单行:#开头,有个例外perl程序第一行也是#开头
    多行:=pod 注释多行代码块 =cut
    参考资料
    Captain
    Unity3d 加密 Assembly-CSharp.dll (Android平台) 全记录
    技术人生
    Unity3D-重新编译Mono加密DLL
    雨松
    Unity3D研究院之Android加密DLL与破解DLL .SO(八十一)
    其它
    Unity 3d脚本加密方案

    展开全文
  • unity mono编译

    2021-03-24 15:22:41
    window虚拟机:VMware Workstation (下载)linux环境:Ubuntu 18.04.4 LTS (网易镜像下载)Mono版本:mono-unity-2019.4-mbe(下载)ndk版本:android-ndk-r16b-linux-x86_64(下载) 编译: 1、卸载旧版本mono...

    window虚拟机:VMware Workstation (下载)
    linux环境:Ubuntu 18.04.4 LTS (网易镜像下载)
    Mono版本:mono-unity-2019.4-mbe(下载) 
    ndk版本:android-ndk-r16b-linux-x86_64(下载)

    编译:
        1、卸载旧版本mono编译环境
            sudo apt-get --purge remove mono-runtime
            sudo apt-get autoremove
            
        2、安装新版本mono编译环境 (国内镜像安装)
            
            sudo apt install gnupg ca-certificates
            sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
            echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

            sudo apt update
            sudo apt install mono-devel 
        
        3、安装必要的工具
            apt-get install autoconf  automake  libtool  libtool-bin  git  cmake  python
        
        4、cd到mono根目录(mono-unity-2019.4-mbe解压出来的所在目录)
            ./qutogent.sh
            ./make
            
        5、到mono/external/buildscripts目录下
            1)修改build.pl 中 my $existingMonoRootPath='/usr/lib/mono'
            2)将ndk解压到下面的路径:artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b
            3)检查extrnal目录下的bgwgc、boringssl、roslyn-binaries是否是空的,如果是就到主干上单独下载,然后放到对应的目录内
            4)./build_runtime_android.sh
            
        6、编译出来的 libmonobdwgc-2.0.so 是debug版本 (PS:我是把编译处理的android文件夹拷贝到桌面 /home/admin/Desktop )
            1) 处理armv7 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/arm-linux-androideabi-clang/bin
                ./arm-linux-androideabi-strip /home/admin/Desktop/android/armv7a/libmonobdwgc-2.0.so
                
            2) 1) 处理x86 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/i686-linux-androideabi-clang/bin
                ./i686-linux-androideabi-strip /home/admin/Desktop/android/x86/libmonobdwgc-2.0.so

    展开全文
  • 请先下载Unity版本对应的mono虚拟机,然后找到Image.c这个文件。覆盖之。
  • https://unity3d.com/get-unity/download/archive...下载对应版本Unity Installer 然后下载MonoDeveloper/Unity Debuger 选择Download to,不然下载后会被删掉 然后把下载的UnityMonoDevelopSetup.exe拷贝到内网安装即可

    方法一:
    https://unity3d.com/get-unity/download/archive
    下载对应版本Unity Installer
    然后下载MonoDeveloper/Unity Debuger
    选择Download to,不然下载后会被删掉
    然后把下载的UnityMonoDevelopSetup.exe拷贝到内网安装即可

    方法二:
    直接在Unity编辑器中获取下载地址,然后进行下载

    展开全文
  • Unity游戏开发】垃圾回收基础学习 总结: Unity游戏运行时内存占用分以下几部分: Mono堆:C# 代码 Native堆:资源,unity引擎逻辑,第三方逻辑。 库代码:Unity库,第三方库。 Mono堆: 代码分配的内存...
  • Unity Mono DLL的破解及保护

    千次阅读 2020-05-22 13:33:43
    Mono dll脚本是Unity前期包含现在还有很多游戏在使用的脚本方式,这种脚本可以使用工具(如dnspy)完全逆向。破解者改包和竞品分析的难度非常低。 很多有安全意识的游戏都会自己修改mono源码的mono_image_open_from_...
  • unity mono 编译

    万次阅读 热门讨论 2014-11-17 10:45:32
    Unity 4.3版本的monomono: https://github.com/Unity-Technologies/mono/tree/unity-4.3 cygwin: X86 32的,安装的时候要选择autoconf make libtools  由于cygwin的make在处理windows dos路径有些...
  • 现阶段还在去考虑mono编译的,多数都是unity引擎开发的较老的游戏(新游戏都较普遍使用Il2cpp),或是图mono热更这块简单些,不管如何吧,目前也还是有少许游戏需要用monomono编译则是因为自己需要对源码做些修改,有些...
  • unity mono和IL2CPP的区别

    2020-10-19 15:08:53
    例如:c# 接下来说一下unity3d 中mono: 简单理解一下mono其实是一个项目框架和工具,里边包含了c#的编译器和通用语言框架。 说起来mono那不得不说c#,c#是微软推出的一种基于.NET框架的、面向对象的高级编程语言,...
  • unity mono 库编译笔记

    千次阅读 2016-10-12 11:01:34
    编译过程会自动下载一个android库,unity 5.4 的存储路径变掉了和旧版本不一样,可能更有利于后期版本公用吧 KRAIT_PATCH_PATH="${CWD}/../../android_krait_signal_handler/build" 5.4 以前的路径 ...
  • 首先感谢文章https://blog.csdn.net/swj524152416/article/details/69946259,...1. GitHub上下载需要版本的mono源码:mono下载链接:https://github.com/Unity-Tech...
  • Unity mono和IL2CPP的区别

    2021-03-30 23:25:32
    之前被问到了IL2CPP,今天找到一篇写的比较通俗易懂的文章,只能勉强入个门,还需要深入学习! ...静态语言和动态语言的区别 静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型...接下来说一下unity3
  • unity mono 编译(转)

    千次阅读 2015-05-01 01:40:53
    Unity 4.3版本的monomono: https://github.com/Unity-Technologies/mono/tree/unity-4.3 cygwin: X86 32的,安装的时候要选择autoconf make libtools  由于cygwin的make在处理windows dos路径有些...
  • 介绍了一些给予MonoUnity 开发环境,编译环境中的一些概念。 Mono -> IL2CPP https://blog.csdn.net/zhurongboyitu/article/details/78709308 .Net 是一套标准 .Net 的三种实现 .Net Framework、.Net core、...
  • 测试结果和上面类似:
  • Unity mono apk包和 l2cpp apk包区别

    千次阅读 2019-03-20 12:17:49
    环境Unity2018.2.15 资源代码是一模一样的 包体大小 mono 171M l2cpp包 150M 原始的工程数据一样 左边是 mono 包 解开之后 右边是 l2cpp 包解开之后 从结果上看。 运行时的支持库是不一样的。 mono 用的是 ...
  • # 环境- Unity 4.6.4 / Windows# 测试代码# 结果数据# 结论foreach存在bug,会导致GC,并且效率低下;使用GetEnumerator代替,没有GC,并且速度快10倍!建议迭代操作中,List使用for,Dictionary使用GetEnumerator...
  •  此处简单介绍下Mono这个奇葩,主要通过Mono可以轻松实现跨平台,目前使用Unity开发手游Android平台大多使用Mono实现,但是诛仙手游使用il2cpp技术。具体il2cpp知识大家可以度娘。 二、内存分配机制    上图为...
  • 使用Msys2编译unity mono

    2016-08-19 13:59:00
    unity-mono-4.6为例,将unity-mono-4.6放在D盘,将krait_signal_handler改名为android_krait_signal_handler,放在D:\mono-unity-4.6\external目录里。 修改android_krait_signal_handler/build.pl的第10行代码 ...
  • 这两个比较常用的本地sql存储文件路径在mac系统下的: .../Applications/Unity/Unity.app/Contents/Mono/lib/mono/2.0/Mono.Data.Sqlite.dll/Applications/Unity/Unity.app/Contents/Mono/lib/mono/2.0/System.Data.dll
  • 《介绍一种基于MonoUnity热更新方案》热更新是Unity3D开发总也绕不过去的话题,甚至影响到了开发语言,程序架构、人员配置,不可谓不重要。文章开头先从一些大家都熟知的东西带入。热更新目前有很多成熟的方案,...
  • 【Mac】unity Mono 在Mac 上的开发技巧

    千次阅读 2016-11-14 16:03:57
    由于 在mac 上用Unity 开发 编辑器 最好的 就是Mono 当然没有 Win 上的 VS辣么强大  在VS 2013 的时候 会自动显示 方法引用  其实在Mono上也有 (博主。。。。才发现)
  • 功能需要重编译mono.so库 添加JNI_OnLoad函数后发现JVM虚拟机不调用 使用nm查看 so库 发现没有JNI_OnLoad符号 需要在mono/mono/mini/ldscript配置文件表中Global添加 再打包就正确了 困扰了好久  主要对...
  • 因为项目需要,要整一个DLL热更功能,本身也想对DLL进行加密,所以需要修改Mono的代码,并重新编译。参考了网上的教程后,决定在linux下做重编的工作。  然而在实际执行的时候,一开始就碰到了巨大的坑,卡了我两...
  • 对于没有升级到 Unity5.4的用户,发布安卓版本都会有对 C# 脚本进行加密的需求,我们项目在裸奔了很长时间后,决定开始做这件事。  网上查看了很多资料,我很希望直接在 windows 下编译而不去安装虚拟机在 linux ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,202
精华内容 3,680
关键字:

Unitymono