xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:凤凰彩票app下载 > 美术 > dotNet开发游戏微端

dotNet开发游戏微端

发布时间:2019-10-03 16:02编辑:美术浏览(80)

    供给深入分析

    功效供给

    当游戏者使用不辅助 unity webplayer 的浏览器步入娱乐时,让游戏的使用者通过微端玩游戏。

    担保微端的成效和页游戏作用雷同。

    凤凰彩票官网app下载,大约效能正是为unity web game开荒微端,注:本文的微端做法也可适用于别的引擎的游戏项目。

    运作条件

    操作系统:Windows XP/7/8/10 x86/x64 (windows all) ,Mac和Linux客户可应用网页步入游玩

    开拓工具:Visual Studio 12/13/15 ,Unity3D 4.x 5.x

    叠合条件:已设置.NetFramework 2.0 及以上版本

    流程图

    凤凰彩票官网app下载 1

    文件表达

    1. wdSetup:微端安装程序
    2. fileUpdate:微端更新程序
    3. xxLauncher:微端运维器
    4. uninst:微端卸载程序

    开采进程

    version log

    v0.1 原来老微端是利用C++编写登入器,首要技巧是置于网页的办法,时期已久加上职员改动,未有联网到源码……

    v0.2 由于各样某因,C++那边认为.Net做那块能够神速出产品,所以本事上改用C#

    v0.2 在二〇一六年终,.NetCore正式还未公布,doNet的跨平台方案选取上mono较成熟,故考虑mono的GTK

    v0.3 安排忽地提前,mono gtk技艺还没摸热,运营就要微端版本了,故改用windows 平台的doNet

    v0.4 依照营业陈设,完结支付并投入使用(使用wpf开荒)

    v0.5 0.4本子中应用的wpf本领必要.net framework3.5及以上版本,运行进度中发掘游戏发烧友Computer并不是都有安装,故思索winform(仅需.net framework2.0)

    v0.6 winform版本做法也是登陆器+嵌入网页的落到实处际情形势,但运转觉得体验非常不够好(特别在windows10下),一样须求游戏用户安装unity webplayer插件。

    v0.7 立异做法:登陆器 + 导出unity PC,MAC && Linux Standalone 工程(可实行程序)

    已知难点

    除去某些首要文件,不能运行。

    roadmap

    • 刷新和扫除缓存作用
    • 不一样内网和外网版本
    • 登陆器能无法调用顾客的暗许浏览器,而非IE?
    • 提出好的艺术标志文件版本,而非通过txt标识?
    • 作业职能分红dll,方便热更新主程序。
    • 与运转平台组成,全自动化流程饱含打包,签字,发表。

    连锁文化

    system.diagnostics.process

     

    winform MSDN资料

     

    WPF MSDN资料

    为Windows平台构建Unity插件

    C# Call Windows API Messagebox

    WIN32 API:C# calling a DLL API, in this case, MessageBox in user32.dll:

    using System;
    using System.Runtime.InteropServices;
    
    class Example
    {
        // Use DllImport to import the Win32 MessageBox function.
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
    
        static void Main()
        {
            // Call the MessageBox function using platform invoke.
            MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
        }
    }
    

    Unity调用doNet的dll

    以winform的dll为例

    1. 找到System.Windows.Forms.dll,并导入System.Windows.Forms到Unity工程的Pulgins目录

    1. 修改player settings中api compatibillity Level 为 .NET2.0

    2. 在Unity代码中调用winform的api

    示范代码:

    凤凰彩票官网app下载 2

     

    窗体和控件的透明

    窗体透明

    1. 在Picturebox中放置背景图片,并关于底层。

    2. using the Form.TransparencyKey property(设置Form透明)

    3. 确保Form的TransparentKey和BackColor一致,并设置From的Border为None

    4. 运营,就足以观望背景图多余的白边未有了。(PS:winform原生不匡助阿尔法透明通道,须求水墨画调治图像)

    //this.BackColor = Color.Black;//设置边角的颜色
    //this.BackColor= new Color();
    this.TransparencyKey = BackColor;//!imporant确保此属性和BackColor一致
    this.FormBorderStyle = FormBorderStyle.None;
    

    Form透明

    stackoverflow:How to make winform window transparent and picture Visible?

    另一个Demo:Transparent Borderless Forms in C#

    图表和控件透明(GDI+)

    codeproject:How to Use Transparent Images and Labels in Windows Forms

    凤凰彩票官网app下载 3

    开关图片透明

    油画陈设在Unity中制作Button一样,底图+图片文字描述,不过实际开辟进度中,使用winform的button组件制作那么些效果费时,还达不到精彩效果,例如文字是图表的话,图片地点还调出满足的职位,下图是winform原生的button背景图和图纸的脾气

    凤凰彩票官网app下载 4凤凰彩票官网app下载 5

    末段是选拔多个PictureBox叠合在一齐来落作用果的。

    动画部分

    How to show and hide form using sliding effect of AnimateWindow function using c#?

    Picturebox.Image.Name不能得到

    public void MouseEvent(object sender, EventArgs eventArgs, int animType, bool enter)
    {
        if (sender is PictureBox)
        {
            //FIX PictureBox无法获得图片的Name
            var pictureBox = sender as PictureBox;
            var hoverPicName = enter ? "pic_enter" : "pic_normal";
            var obj = Resources.ResourceManager.GetObject(hoverPicName);
            if (obj != null)
            {
                pictureBox.Image = obj as Image;
            }
        }
    }
    

    鼠标滑过改造图片/动画

    winform原生button未有NGUI的button那样提供互相动画,那几个照旧要靠本人的动手。

    PictureBox交互动画演示:

    把图片合进Exe

    1、选中项目,右键 - 属性 - 能源 ,点击下拉列表,选拔图像。

    凤凰彩票官网app下载 6

    2、多选需求的图片,拖动到财富中

    凤凰彩票官网app下载 7

    3、在供给图片的控件中从 种类财富文件中选择,图片size模式为:AutoSize

    4、注意:图片被轮换之后,要重复选拔二遍图片,才会刷新。(PS.这是笔者遇到的难点)

    代码调用图片

    xx.Image = Resources.你的图形名 as Image

    this.Icon = Resources.icon;
    

    自动化Visual Studio流程

    自动化visual studio编写翻译 exe或dll 的历程,整合进运营平台流程,解放双臂。

    devenv 命令行参数:

    遇见难点:参数错误

    未能完成操作。参数错误。 
    
    用法: 
    devenv [解决方案文件 | 项目文件 | 任意文件.扩展名] [开关]
    
    devenv 的第一个参数通常是一个解决方案文件或项目文件。
    如果您希望在编辑器中自动打开文件,
    也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE
    会在项目文件的父目录中查找与该项目文件具有相同
    基名称的 .sln 文件。如果不存在这样的 .sln 文件,
    IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个
    .sln 文件,则 IDE 将创建一个具有默认 .sln 文件名的未保存
    的解决方案,其基名称与项目文件的基名称相同。
    
    命令行生成: 
    devenv 解决方案文件.sln /build [ 解决方案配置 ] [ /project 项目名称或文件 [ /projectconfig 名称 ] ]
    可用的命令行开关:
    

    难点的由来是如此的:小编创立的csproj文件和vs的sln目录同级,在钦定路径时,出现了难题

    凤凰彩票官网app下载 8

    vs给出的错误提醒中建议:可以运用项目连串文件或减轻方案文件,所以改成csproj文件就OK了。

    cd %~dp0 
    
    set log_file=%~dp0logsbuildlog.log
    set save_path=%~dp0release_files
    rem this project don't create sln,use csproj
    set launcher_sln=%~dp0Lanucher_WinFormLanucher_WinForm.csproj
    set launcher_files=%~dp0Lanucher_WinFormbinReleaseYlLaunch.exe
    
    rem note path
    devenv %launcher_sln% /build Release /project "Lanucher_WinForm.csproj" /projectconfig Release /Out %log_file% 
    copy %launcher_files% %save_path%Launch_test.exe
    

    演示脚本:

     

    注意事项:bat语法中 =号两侧未有空格,作者遇上有空格视为语法错误

    set log_file="c:buildlog.log"
    set log_file = "c:buildlog.log"
    

    dll和别的文件合併到三个exe

    ILMerge

    下载:

    C#中用ILMerge将全部援引的DLL和exe文件打成三个exe文件

    Winform 集成零散dll进exe的措施

     

    踩过的坑

    1. WebBrowser在窗口大小改动闪动
    2. WinForm图片替换了还要再一次浏览才会刷新

    本文由凤凰彩票app下载发布于美术,转载请注明出处:dotNet开发游戏微端

    关键词: