<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liqing19850102的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liqing19850102</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liqing19850102]]></copyright><item><title><![CDATA[Unity 游戏开发性能优化全景手册]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/164404610</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/164404610</guid><author>liqing19850102</author><pubDate>Sat, 05 Sep 2026 23:00:51 +0800</pubDate><description><![CDATA[技巧说明ScriptableObject 驱动配置数值、事件、配置全在 SO，策划/美术在 Inspector 改，不改代码、不重编译SO 事件通道跨系统通信不依赖引用（GameEvent），消灭和单例RuntimeSet追踪场上实体（所有敌人、所有友军），替代和单例列表单职责组件一个 MonoBehaviour 只干一件事；超过 150 行就该拆自包含 prefab拖到空场景就能跑，不依赖外部层级状态机角色状态、UI 面板、游戏流程（Procedure）都用状态机，逻辑清晰可扩展对象池统一管理。]]></description><category></category></item><item><title><![CDATA[Unity 性能优化 · 图解全景手册]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/164404492</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/164404492</guid><author>liqing19850102</author><pubDate>Sat, 05 Sep 2026 22:52:09 +0800</pubDate><description><![CDATA[方法论 · 特效 · 模型 · UI · 编程内存 · 渲染 · 包体 · 13 张图 · 面试速查0101。]]></description><category></category></item><item><title><![CDATA[Unity 性能优化 · 图解全景手册]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/164404431</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/164404431</guid><author>liqing19850102</author><pubDate>Sat, 05 Sep 2026 22:49:31 +0800</pubDate><description><![CDATA[常见的开销来源包括：Collision 模块（碰撞检测）、Sub Emitters 模块（子发射器）、Noise 模块（噪声扰动）、Trails 模块（拖尾渲染）。建议将频繁变化的文本、图标等元素放在独立的 Canvas 中，静态背景和固定布局放在另一个 Canvas 中，从而减少不必要的网格重建。性能优化是一个闭环过程，核心思路是：先建立基线，再定位瓶颈，然后针对性优化，最后回归验证。UI 性能优化的核心思路是动静分离：将静态 UI 和动态 UI 分开管理，避免动态元素破坏静态元素的合批。]]></description><category></category></item><item><title><![CDATA[免 root 开启 Pixel 手机 VoLTE 功能]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/145140664</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/145140664</guid><author>liqing19850102</author><pubDate>Tue, 14 Jan 2025 15:37:21 +0800</pubDate><description><![CDATA[部分运营商需要开启 VoLTE 功能才可以正常通话和接收短信，但是默认情况下，Pixel 是无法开启的，需要我们手动开启一下。经过网友的确认，这种方法还适用于荣耀 MAGIC 等其他品牌的手机。]]></description><category></category></item><item><title><![CDATA[Unity导出Gradle工程或者apk包，StreamAssets目录文件超过255无法导出的问题 ... ... ...]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/83143146</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/83143146</guid><author>liqing19850102</author><pubDate>Thu, 18 Oct 2018 11:27:51 +0800</pubDate><description><![CDATA[   最近升级了unity，直接跨版本更新到了2018，工程随之遇到了问题，StreamAssets文件超标的问题，遍寻各大国内外帖子博客也没有找到解决方法。好一阵折腾，特此记录分享下。先上错误码：

CommandInvokationFailure: Gradle build failed. 

C:/Program Files/Java/jdk1.8.0_171\bin\java.exe -c...]]></description><category></category></item><item><title><![CDATA[CommandInvokationFailure: Failed to build apk的问题记录]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/80505881</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/80505881</guid><author>liqing19850102</author><pubDate>Wed, 30 May 2018 10:35:15 +0800</pubDate><description><![CDATA[刚构建完整个游戏框架，调试流程，打包真机测试，却发现无法打包，报错如下：这个问题参考https://blog.youkuaiyun.com/THmen/article/details/79424469解决。按THmen君的解释是“Unity 在编译时会调用 Android SDK tools 中的 android 命令，而在新版本的 Android SDK tools 中（我的是26.1.1），android...]]></description><category></category></item><item><title><![CDATA[HTTP请求和响应格式详细解析]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12043841</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12043841</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 11:38:42 +0800</pubDate><description><![CDATA[引言                                        


HTTP是一个属于应用层的面向对象的协议，由于其简捷、快速的方式，适用于分布式超媒体信息系统。它于1990年提出，经过几年的使用与发展，得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版，HTTP/1.1的规范化工作正在进行之中，而且HTTP-NG(Next
 Generation ]]></description><category></category></item><item><title><![CDATA[HTTP请求报文和响应报文]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12042251</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12042251</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 11:33:19 +0800</pubDate><description><![CDATA[HTTP报文是面向文本的，报文中的每一个字段都是一些ASCII码串，各个字段的长度是不确定的。HTTP有两类报文：请求报文和响应报文。

 

1、请求报文
一个HTTP请求报文由请求行（request line）、请求头部（header）、空行和请求数据4个部分组成，下图给出了请求报文的一般格式。

 （1）请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字]]></description><category></category></item><item><title><![CDATA[HTTP非持久连接和持久连接]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12041491</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12041491</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 10:49:07 +0800</pubDate><description><![CDATA[HTTP非持久连接和持久连接

HTTP既可以使用非持久连接（nonpersistent connection），也可以使用持久连接（persistent connection）。HTTP/1.0使用非持久连接，HTTP/1.1默认使用持久连接。



1．非持久连接

让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面的步骤。假设该页面由1个基本HTML文件和10个J]]></description><category></category></item><item><title><![CDATA[HTTP流程的基本原理]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12041205</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12041205</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 10:46:51 +0800</pubDate><description><![CDATA[HTTP流程的基本原理


HTTP协议是一种请求/应答协议。 与主机建立连接后，客户以请求方法，URI和协议版本的形式向服务器发送请求，其中包括请求修改、客户信息和可能的正文内容。

服务器用包括消息协议版本和成功或错误代码的状态进行应答，包括服务器信息，实体维护信息和可能的实体内容的类MIME消息。

大部分的HTTP通信由用户代理引发，由发送到一些原服务器上资源的请求构成。最简]]></description><category></category></item><item><title><![CDATA[C文件读写相关函数]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12040885</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12040885</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 10:39:43 +0800</pubDate><description><![CDATA[C文件概述

1、“文件(file)”：所谓“文件”是指一组相关数据的有序集合。数据以文件的形式存放在外部介质(一般是磁盘、磁带、光盘等)上,在操作系统中是以文件为单位对数据进行管理的。以文件名作为访问文件的标识。




2、C语言把文件看作一个字节序列，即由一连串的字节组成。根据文件中的数据组织形式，数据文件可分为ASCII码文件和二进制文件。

ASCII码文件，又称为“文]]></description><category></category></item><item><title><![CDATA[按字节、位、字寻址]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12040387</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12040387</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 10:30:11 +0800</pubDate><description><![CDATA[按字节寻址，存储空间的最小编址单位是字节，
按字编址，存储空间的最小编址单位是字，   
最小编址单位的选择，和存储容量、地址总线宽度都有关联 。同样的存储容量， 粒度小了，地址长度就需要更长 。
就是根据不同的方式寻找内存地址，计算机中大多数寄存器的尺寸是一个字长。计算机处理的典型数值也可能是以字长为单位。CPU和内存之间的数据传送单位也通常是一个字长。

字（word）      占]]></description><category></category></item><item><title><![CDATA[fread读文件总是多出那么部分内容解决方法]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/12040193</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/12040193</guid><author>liqing19850102</author><pubDate>Thu, 26 Sep 2013 10:21:24 +0800</pubDate><description><![CDATA[文件1.txt中的内容如下：

  “123”

   “456”

用下面的方式统计文件的字节数：   

    fp = fopen("1.txt", "r");

    fseek(fp, 0, SEEK_END);
    file_len = ftell(fp);

则file_len统计了文件1.txt中的字节数为：8

用函数 readLen = f]]></description><category></category></item><item><title><![CDATA[同步通信与异步通信的区别]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/8590168</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/8590168</guid><author>liqing19850102</author><pubDate>Tue, 19 Feb 2013 10:45:01 +0800</pubDate><description><![CDATA[同步就是你叫我去吃饭，我听到了就和你去吃饭；如果没有听到，你就不停的叫，直到我告诉你听到了，才一起去吃饭。
异步就是你叫我，然后自己去吃饭，我得到消息后可能立即走，也可能等到下班才去吃饭。
所以，要我请你吃饭就用同步的方法，要请我吃饭就用异步的方法，这样你可以省钱。

 
同步是指：发送方发出数据后，等接收方发回响应以后才发下一个数据包的通讯方式。  
异步是指：发送方发出数据后，不等]]></description><category></category></item><item><title><![CDATA[StringOpt]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7804707</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7804707</guid><author>liqing19850102</author><pubDate>Tue, 31 Jul 2012 10:25:57 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include "StringOpt.h"
bool IsSpace(char c)
{
    if (' ' == c || '\t' == c)
 {
        return true;
 }
    return false;
}
void TrimLeft(string &str)
{
    if (str.emp]]></description><category></category></item><item><title><![CDATA[MyProgressCtrl]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7804267</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7804267</guid><author>liqing19850102</author><pubDate>Tue, 31 Jul 2012 09:02:26 +0800</pubDate><description><![CDATA[// MyProgressCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "iDART_UI.h"
#include "MyProgressCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[]]></description><category></category></item><item><title><![CDATA[MyFolderEditBrowseCtrl]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7804265</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7804265</guid><author>liqing19850102</author><pubDate>Tue, 31 Jul 2012 09:01:33 +0800</pubDate><description><![CDATA[// MyFolderEditBrowseCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "iDART_UI.h"
#include "MyFolderEditBrowseCtrl.h"
//////////////////////////////////////////////////////////////]]></description><category></category></item><item><title><![CDATA[GridCtrlView]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7802362</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7802362</guid><author>liqing19850102</author><pubDate>Mon, 30 Jul 2012 15:47:22 +0800</pubDate><description><![CDATA[// GridCtrlView.cpp : implementation file
//
#include "stdafx.h"
#include "iDART_UI.h"
#include "iDART_UIDoc.h"
#include "GridCtrlView.h"
////////////////////////////////////////////////////////]]></description><category></category></item><item><title><![CDATA[GoogleEarthView]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7802355</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7802355</guid><author>liqing19850102</author><pubDate>Mon, 30 Jul 2012 15:46:44 +0800</pubDate><description><![CDATA[// GooleEarthView.cpp : implementation file
//
#include "stdafx.h"
// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
// ATL 项目中进行定义，并允许与该项目共享文档代码。
#ifndef SHARED_HANDLERS
#include "iDART_UI.h"
#endif
#i]]></description><category></category></item><item><title><![CDATA[FunctionView]]></title><link>https://blog.youkuaiyun.com/liqing19850102/article/details/7802347</link><guid>https://blog.youkuaiyun.com/liqing19850102/article/details/7802347</guid><author>liqing19850102</author><pubDate>Mon, 30 Jul 2012 15:45:41 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include "MainFrm.h"
#include "FunctionView.h"
#include "Resource.h"
#include "iDART_UI.h"
#include "MyPropertySheet.h"
#include "TimerManagerPage.h"
class CFunctionViewMenu]]></description><category></category></item></channel></rss>