C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出

本文介绍了如何在C# WPF/Silverlight游戏开发中实现地图的自定义切片和导出功能,以提高游戏性能。通过绘制Line优化障碍物边线,使用NumericUpDown控件设定切片尺寸,并利用CroppedBitmap导出地图切片。讨论了地图尺寸与切割尺寸的配合,以及文件大小优化的建议。
摘要由CSDN通过智能技术生成

做为提升游戏性能的一个重要环节就是地图的优化,作为基于Web的游戏来说,可以通过将地图切成若干同尺寸的片后,根据主角的位置进行时时的按需加载。举个简单例子,好比一幅20000*20000的地图,我们将之以400*400像素为一个地图片单位切成2500片,假若游戏窗口尺寸为800*600,那么我们每次只需加载以主角为中心的周围9块地图片(1200*900像素)即可实现填充,这比起一次性加载诺大一张地图,且在移动时对其不停的切割,性能优越得太多太多。

那么本节我将向大家讲解如何为地图编辑器添加自定义切片与导出功能,从而为下一节的游戏地图性能优化做准备。

大家是否还记得在第三十四节中,我将地图显示部份分为了三层:障碍物层,障碍物单元格边线层及地图切片边线层。我曾在文中提过利用GridShowGridLines来为单元格设置边框操作,尽管使用简单但性能却极其低下。这里我们可以通过在障碍物单元格边线层中绘制Line的方式来优化它:

        /// <summary>

        /// 绘制网格边线

        /// </summary>

        private void SetGridLines(Canvas carrier, double totalWidth, double totalHeight, double singleWidth, double singleHeight,Color lineColor, double dashWidth, double dashSpace) {

            carrier.Children.Clear();

            int sectionXNum = (int)(totalWidth / singleWidth);

            int sectionYNum = (int)(totalHeight / singleHeight);

            for (int x = 1; x <= sectionXNum; x++) {

                Line line = new Line() {

                    X1 = x * singleWidth,

                    X2 = x * singleWidth,

                    Y1 = 0,

                    Y2 = totalHeight,

                    Stroke = new SolidColorBrush(lineColor),

                    StrokeDashArray = new DoubleCollection() { dashWidth, dashSpace },

                };

                carrier.Children.Add(line);

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值