<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FlyToCloud的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/FlyToCloud</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FlyToCloud]]></copyright><item><title><![CDATA[平面点映射问题-透视变换]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/120029346</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/120029346</guid><author>FlyToCloud</author><pubDate>Wed, 01 Sep 2021 18:42:02 +0800</pubDate><description><![CDATA[实际问题：

在游戏项目的开发中恰好遇到了一个问题：需要将篮球比赛中球员和篮球的位置映射到一个2d的背景图上做一个沙盘效果展示。该2d的图片是手绘的带有透视的图，而沙盘上的球员以及篮球除了位置以外，本身的图形不带有透视。

因此正好需要用一个透视变换将原本球场中球员和篮球的位置变换到新的平面中。

其他相似问题：

游戏中透视相机成相、图像校正。

透视变换：

可以通过如下矩阵将平面a中的点u,v映射为平面b中的x,y



其中：

该矩阵就是我们需要的透视变换矩阵，至于为什么透视矩阵是这样的结构不在这]]></description><category></category></item><item><title><![CDATA[方程组求解-高斯消元法]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/120029201</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/120029201</guid><author>FlyToCloud</author><pubDate>Tue, 31 Aug 2021 23:32:43 +0800</pubDate><description><![CDATA[问题描述：

对如下方程组利用高斯消元法求解x1~xn



基本思路：

通过行列变化将方程组转化为上三角矩阵，再逐一回代求解出解向量。

具体步骤：

1.构建上三角矩阵

 k从1到n迭代:

  第一步：以k行k列为起点的矩阵中最大的系数通过行列交换到k行k列

  第二步：将第k行/akk使得xk的系数变成1

  第三步：将第k行按系数加到K+1至n行使得k+1至n行xk的系数0

2.回代求解

  第一步：从第n行开始回代消元，求出x1~xn

  第二部：依据...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发-客户端Http下载]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/115129193</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/115129193</guid><author>FlyToCloud</author><pubDate>Tue, 23 Mar 2021 18:12:14 +0800</pubDate><description><![CDATA[本篇主要分享基于.Net实现一个客户端Http下载模块。

Http下载这块和服务器也有一定的联系，关于服务器Http下载模块的实现可以参考这里《基于C#的服务器Http通信》
]]></description><category></category></item><item><title><![CDATA[unity游戏开发-简易的状态机]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/115119678</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/115119678</guid><author>FlyToCloud</author><pubDate>Tue, 23 Mar 2021 18:11:29 +0800</pubDate><description><![CDATA[本篇主要分享一个简易状态机的实现。

目录

状态机

应用例子

业务需求

普通实现

缺点分析

状态机实现

优点分析

状态机

简单点讲状态机其实就是将一个具体的业务拆分为几个小的状态，状态之间由一定的条件来达成迁移。

因此对一个状态机而言，有两块内容：状态机、状态。

状态机管理着各个状态，控制状态之间的迁移，提供状态间迁移的注册方法，而状态只用处理自身的逻辑即可。

另外，不论是状态或者状态机都必须有明确的生命周期：开始、执行中、结束。


using System.Collections]]></description><category></category></item><item><title><![CDATA[Unity游戏开发-游戏热更新以及登录流程]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/115075246</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/115075246</guid><author>FlyToCloud</author><pubDate>Tue, 23 Mar 2021 18:10:50 +0800</pubDate><description><![CDATA[本篇主要分享基于热更新的游戏初始化方案。

整体初始化的流程大致为：检查是否需要解压资需要则解压，之后再检查是否存在需要热更新的资源文件需要则更新，更新完成后则初始化结束可进入登录界面。

关于登录这块的处理还涉及到了一个状态机有兴趣可以参考这里《unity游戏开发-简易的状态机》

其中热更新完整的方案本身包含了以下四个部分：

资源文件打包
	资源文件比较
	资源文件下载
	资源文件更新
其中资源文件打包可以参考这里《Unity游戏开发-Assetbundle打包》

本篇主要会涉及到资源文件比较和更新]]></description><category></category></item><item><title><![CDATA[Unity游戏开发-Assetbundle打包]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/115072864</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/115072864</guid><author>FlyToCloud</author><pubDate>Tue, 23 Mar 2021 18:09:27 +0800</pubDate><description><![CDATA[本篇主要是分享unity Assetbundle的打包处理。

打包接口


BuildPipeline.BuildAssetBundles(folder, BuildAssetBundleOptions.UncompressedAssetBundle, platform);

打包AssetBundles主要是通过Unity Editor提供的BuildPipeline.BuildAssetBundles这个接口来完成打包。

folder就是打包好之后的输出路径，platform根据要输出的平台选择即可]]></description><category></category></item><item><title><![CDATA[unity游戏开发-socket网络通信]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/114693921</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/114693921</guid><author>FlyToCloud</author><pubDate>Fri, 12 Mar 2021 15:15:28 +0800</pubDate><description><![CDATA[本篇主要是分享基于unity的客户端socket网络通信方案。关于服务器的c#-socekt搭建放在了这里《基于C#的Tcp服务端通信》。其中关于socekt粘包断包的处理放在这里分享了《C# socket粘包断包处理》。

整体设计



如图所示，一共采用了两层封装来处理整个客户端的逻辑。

首先TcpClient脚本只处理最基础的连接建立，消息的发送和接收。

TcpClientMgr管理和穿件TcpClient。在利用好连接建立，消息收发的基础上再处理业务上的需求：心跳、消息等待、事件传递等。

T]]></description><category></category></item><item><title><![CDATA[C# socket粘包断包处理]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/114681735</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/114681735</guid><author>FlyToCloud</author><pubDate>Thu, 11 Mar 2021 22:38:33 +0800</pubDate><description><![CDATA[概述

socket接收消息的时候经常会出现粘包和断包的问题。

比如：

发送的时候有1000个字节，但是一次接收只有600个字节。即一条完整的消息在接收的时候断开了

两次发送分别发送了1000个字节，但是一次接收到了1500个字节，第二次才收到另外500个字节。即一条完整的消息在一次接收的时候还额外收到了其他消息的部分数据，甚至一次多条数据。

这里尝试的解决办法是对每个消息拆分为几个部分，其中最重要的是消息头header和消息长度len。

当我们收到消息的时候首先判定header当前字节是否为一条]]></description><category></category></item><item><title><![CDATA[基于C#的Tcp服务端通信]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/114670482</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/114670482</guid><author>FlyToCloud</author><pubDate>Thu, 11 Mar 2021 22:37:52 +0800</pubDate><description><![CDATA[本篇主要是分享基于.Net的tcp服务端通信方案。其中基于unity的tcp客户端通信会在这里分享。另外关于tcp粘包断包的处理将放在这里分享。

整体设计



如图所示一共采用了三层封装来处理整个服务端的逻辑。

首先最上层的TcpServerMgr可以被业务层直接创建，并且通过事件系统将服务器收到的来自客户端的网络消息分发到各个业务系统中去。

其次TcpServer负责了整个tcp网络通信的创建，监听建立连接，关闭，心跳超时等等处理。对于正常接收到的消息通过一个回调函数传递给TcpServerMgr]]></description><category></category></item><item><title><![CDATA[centos7云服务器上部署.Net工程]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/114296933</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/114296933</guid><author>FlyToCloud</author><pubDate>Thu, 04 Mar 2021 22:29:43 +0800</pubDate><description><![CDATA[1.腾讯云购买一个服务器

2.https://www.netsarang.com/zh/xshell/下载Xshell和Xftp辅助我们登录和上传东西到服务器
]]></description><category></category></item><item><title><![CDATA[游戏开发中图片模糊、锯齿相关问题的处理]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/107475893</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/107475893</guid><author>FlyToCloud</author><pubDate>Mon, 20 Jul 2020 23:49:43 +0800</pubDate><description><![CDATA[引言：

在游戏开发中经常会碰到一个比较头疼的问题。“明明美术出的图很好看很清晰，放到游戏里就糊了、或者有锯齿看着很难受”。

尤其是做手机游戏，因为要适配各种性能配置的手机。往往对资源要进行压缩处理来减小包体和内存的占用。

针对这些糊了、锯齿等现象一般的处理就是根据经验去切换压缩类型、换高清图、打开引擎提供的抗锯齿等等。

这些方法往往还是比较有效的，所以重点是在各种情况下找到最合适的解决办法。

常见的图片显示失真情况：

1.低频采样

情景：在游戏中设置图片的尺寸小于实际图片的尺寸。

原因：纹理]]></description><category></category></item><item><title><![CDATA[Unity shader 带边缘溶解效果]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/105941401</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/105941401</guid><author>FlyToCloud</author><pubDate>Tue, 05 May 2020 23:48:27 +0800</pubDate><description><![CDATA[的
]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 帧同步战斗框架 框架篇]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104884840</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104884840</guid><author>FlyToCloud</author><pubDate>Sun, 15 Mar 2020 22:02:10 +0800</pubDate><description><![CDATA[本篇主要是提供帧同步主体框架的实现方法以及源码。还有一些坑点的分析。如果对帧同步理论感兴趣的话可以看看这里《帧同步理论篇》。

ps：我的同步框架是在lua里面写的，已经经过了测试没有什么问题即使网络很卡也可以通过调节同步参数保证游戏的流畅。原来的代码里包含了一些项目内部的信息所以就不直接贴出来了。这里只给出核心代码具体的细节大家可以根据项目需求自己扩充。另外我个人这边是用lua写的同步框架,所以...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 DoTween集成]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104592421</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104592421</guid><author>FlyToCloud</author><pubDate>Tue, 10 Mar 2020 23:54:02 +0800</pubDate><description><![CDATA[下载地址:

http://dotween.demigiant.com/download.php

变化曲线效果参考:

http://robertpenner.com/easing/easing_demo.html

配置惨开:

https://www.jianshu.com/p/252c18016b3f

封装:

TweenUtil (将Tween转换为链式编程)


using Unit...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 帧同步战斗框架 理论篇]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104650408</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104650408</guid><author>FlyToCloud</author><pubDate>Tue, 10 Mar 2020 23:46:24 +0800</pubDate><description><![CDATA[关键词：

逻辑帧，渲染帧，关键帧

逻辑帧：逻辑执行的时间间隔(20帧/s）

渲染帧：渲染执行的时间间隔(60帧/s）

关键帧：服务器lockstep的逻辑帧间隔数(5个逻辑帧)

流程：

通过渲染帧间隔累计定时器，每帧执行渲染回调，当累计时间达到逻辑帧间隔时间执行逻辑回调。

当逻辑帧计数大于前当关键帧数时，锁定定时器不再执行任何逻辑，等待服务器下发下一个关键帧的所有事件。否则在关键帧立...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 优化（动态合并SkinnedMeshrender）]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104603243</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104603243</guid><author>FlyToCloud</author><pubDate>Mon, 02 Mar 2020 00:09:36 +0800</pubDate><description><![CDATA[代码

先上代码，再对比效果。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ComBineSM : MonoBehaviour
{
    // 待合并的skinnedrender(需要所有skinnedMeshrenderer使用同一个材质,否则无法起...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 Spine集成和使用]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104600486</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104600486</guid><author>FlyToCloud</author><pubDate>Sun, 01 Mar 2020 21:55:12 +0800</pubDate><description><![CDATA[目录



准备工作

导入美术资源

制作预制件

调用接口播放动画

动画事件

UI中的Spine

UI Spine使用接口

准备工作

到该链接下载Spine：http://zh.esotericsoftware.com/spine-unity-download/

下载好之后导入unitypackage



导入美术资源



Spine的资源包括三种：xx.atlas, xx....]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 头发飘动效果]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104595614</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104595614</guid><author>FlyToCloud</author><pubDate>Sun, 01 Mar 2020 18:04:05 +0800</pubDate><description><![CDATA[准备工作

下载Unity-chan!插件，到Assetstore搜索"Unity-chan!"，下载并导入。

使用流程

1.在人物模型的根节点添加SpringManager组件。



Dynamic Ratio：范围0-1，决定了飘动的强度0最小，1最大。

Stiffness Force：僵硬程度，当为0时摆动效果非常强，若没有设置阻力会一直摆动。当为1时不会摆动。

Stiffness...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 单例基类]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104566397</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104566397</guid><author>FlyToCloud</author><pubDate>Fri, 28 Feb 2020 23:32:10 +0800</pubDate><description><![CDATA[目录

使用目的

思路和实现

简易单例

通用单例基类

适合Unity的单例基类

使用目的

游戏中有很多公共模块，比如Asset管理模块，UI模块，音频模块等等。

这些公共模块会频繁的被各个业务功能或者其他公共模块调用，为了方便访问通常会考虑使用单例模式来处理这些公共模块。

如果在每个模块都去实现单例未免太麻烦了，所以一般考虑做一个单例的基类供公共模块来继承。

而这个单例基类亦可以...]]></description><category></category></item><item><title><![CDATA[Unity游戏开发 基于多线程的Http网络框架完整篇]]></title><link>https://blog.youkuaiyun.com/FlyToCloud/article/details/104526804</link><guid>https://blog.youkuaiyun.com/FlyToCloud/article/details/104526804</guid><author>FlyToCloud</author><pubDate>Wed, 26 Feb 2020 23:00:41 +0800</pubDate><description><![CDATA[这篇主要是提供完整的代码。。。注释较少请见谅，如果对流程有疑惑可以参考《Unity游戏开发 基于多线程的Http网络框架基础篇》

完整篇除了基础篇讲到的内容之外，出于对性能和安全性的考虑还覆盖了如下内容，这些内容后续更新了会把链接放上来，目前把所有代码贴出来方便直接拷贝就可以使用了：

单例：（BaseController）

对象池： （Poolable、PoolManager）

加密：（E...]]></description><category></category></item></channel></rss>