<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Rhett]]></title><description><![CDATA[不要浪费今天的时间去担忧明天，明天在哪里完全取决于今天的你在干什么，怎么干，干得怎样]]></description><link>https://blog.youkuaiyun.com/Rhett_Yuan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Rhett_Yuan]]></copyright><item><title><![CDATA[Jenkins—安装（Windows）]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/116227508</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/116227508</guid><author>Rhett_Yuan</author><pubDate>Wed, 28 Apr 2021 10:40:41 +0800</pubDate><description><![CDATA[一、首先去Jenkins官网下载安装包（windows的msi文件）

二、windows安装步骤不再详细解释，这里只说遇到的一个问题



由于我的电脑和微软的账号进行了绑定，平时都用的微软账号登录的电脑，但是在此处缺连不上本地服务，需要使用本地电脑的账户密码来登录，并且将该账户赋予权限，以下为步骤：

1、win+r打开命令窗口，输入secpol.msc

2、进入用户策略-用户权限分配

3、找到作为服务登录，进入添加自己的账户即可


...]]></description><category></category></item><item><title><![CDATA[Unity-Editor模式下已知localfileid下获取节点]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/113344833</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/113344833</guid><author>Rhett_Yuan</author><pubDate>Fri, 02 Apr 2021 15:30:16 +0800</pubDate><description><![CDATA[经常的，我们可以通过节点的路径找到这个节点，但是存在一个问题，就是如果该路径下存在多个相同名字的节点的时候，我们不能区分但是使用哪一个，这时候GUID,FileID,LocalID就派上用场了

查看GlobalObjectId使用说明

上代码：


GlobalObjectId rootObjId = GlobalObjectId.GetGlobalObjectIdSlow(rootObj);
string GlobalObjectIdFormat = "GlobalObjectId_V1-{0}-{1]]></description><category></category></item><item><title><![CDATA[Git常用命令]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/113345847</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/113345847</guid><author>Rhett_Yuan</author><pubDate>Thu, 28 Jan 2021 16:05:17 +0800</pubDate><description><![CDATA[克隆项目git cloneurl
	
	
	初始化和更新子模块git submodule init和gitsubmoduleupdate命令
	
	
	工程和子项目切换到dev分支：git checkout dev
	
	
	工程更新：git pull --rebase origin dev
	
	
	将工程推送到线上仓库:gitpushorigindev
	
	
	保存当前工作现场：git stash
	
	
	查看保存的工作现场：git stash list
	
	
	恢复并删除工作现场...]]></description><category></category></item><item><title><![CDATA[AssetBundle——async texture load探索]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/111841894</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/111841894</guid><author>Rhett_Yuan</author><pubDate>Mon, 28 Dec 2020 15:14:49 +0800</pubDate><description><![CDATA[最近项目中反馈在特定的某一个版本热更新完成后，会出现崩溃的情况，通过安卓模拟器查看启动log，发现出现了了一段崩溃日志，分配一大块内存，在网上搜了搜相关的解决方案：

1、侑虎博客：https://answer.uwa4d.com/question/5c0f3ad928c4e32cba319371

2、优快云博友：https://blog.youkuaiyun.com/linxinfa/article/details/99859995

在崩溃的前面发现这么一条日志：async texture load: fail]]></description><category></category></item><item><title><![CDATA[获取不同语言输入字符串的长度]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/107448204</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/107448204</guid><author>Rhett_Yuan</author><pubDate>Sun, 19 Jul 2020 17:42:01 +0800</pubDate><description><![CDATA[由于我们的项目会在不同的国家区域上线，而项目中又会在某些输入的地方限制输入的字符串长度，比如一个中文字符占用两个字节，一个英文字符占用1个字节，不同的语言地区可能占用不同，那么如何获得不通字符的长度呢？

    先给一个ASCII码例子配置(可以生成一个配置表)：

    中文字符：4E00-9FFFF占用两个字符 泰语：0E00-0E7F占用1个字符......

    判断字符代码：


public int GetStrLength(string inp...]]></description><category></category></item><item><title><![CDATA[Unity-Android性能分析Profiler之自动连接手机]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106844904</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106844904</guid><author>Rhett_Yuan</author><pubDate>Thu, 18 Jun 2020 22:48:49 +0800</pubDate><description><![CDATA[参看Unity-Android性能分析Profiler

之前在用真机连接Unity-Profiler的时候一直都是自己手动在输入adb等，很是不方便，今天突然想起为什么不用命令直接启动呢，dos命令奉上


@echo off 
	set adbPath=D:/Android/AndroidSDK/platform-tools/（修改为adb所在路径）
	cd /d %adbPath%
	adb.exe kill-server
	adb.exe forward tcp:34999 localabstrac]]></description><category></category></item><item><title><![CDATA[Unity-屏幕适配之自定义背景]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106421225</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106421225</guid><author>Rhett_Yuan</author><pubDate>Fri, 29 May 2020 11:22:08 +0800</pubDate><description><![CDATA[先说一下我项目，我们的项目是一款回合制手游，但是由于在战斗中无法手动控制镜头的旋转，因而会在某种分辨率下，造成怪物在屏幕外，而造成选择不了怪物的情况，因而策划提出了屏幕适配的需求，但是还希望，屏幕的黑边可以用我们自己定义的背景图。

    首先先看下普通屏幕适配适配，看下面代码：


using UnityEngine;

public class ScreenFitCamera : MonoBehaviour
{
    public static float MinRatio =...]]></description><category></category></item><item><title><![CDATA[C#获取所在的时区]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106022289</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/106022289</guid><author>Rhett_Yuan</author><pubDate>Sat, 09 May 2020 16:32:16 +0800</pubDate><description><![CDATA[由于项目主要做海外市场，发行在不同的国家，因此就有一些根据当地的时间进行处理的需求，而首先第一个我们就需要获得本地所在的时区：

    第一种方案：直接根据TimeZone获取


System.TimeZone.CurrentTimeZone.GetUtcOffset(System.DateTime.Now).Hours

    第二种方案：根据当前的时间和格林尼治时间的差进行获取


System.DateTime utcTime = System.DateTime....]]></description><category></category></item><item><title><![CDATA[企业微信——定时群机器人布置]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/104536493</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/104536493</guid><author>Rhett_Yuan</author><pubDate>Thu, 27 Feb 2020 15:08:27 +0800</pubDate><description><![CDATA[第一步：右击所建的企业微信群，添加群机器人，其他配置请看企业微信官方文档

第二步：下载推荐的curl工具

第三步：编写dos命令：

D:/curl-7.68.0-win64-mingw/bin/curl.exe "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=fe02c110-a5fe-4fa5-91ff-20e448f00045"...]]></description><category></category></item><item><title><![CDATA[Jenkins—分布式部署]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103513377</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103513377</guid><author>Rhett_Yuan</author><pubDate>Fri, 13 Dec 2019 09:33:08 +0800</pubDate><description><![CDATA[当Jenkins-master上的job量足够大的时候，会给master造成很大的压力，而Jenkins的分布式部署则很好的解决了这个问题，最近对该项功能做了初步的探究。

   首先是Jenkins的安装，这里就不再多说了，各种文档和博客有很多。

   在Jenkins的节点管理中新建一个节点，我们配置节点如下



在配置的过程中，关于启动方式一栏，可以在Jen...]]></description><category></category></item><item><title><![CDATA[Unity-Material去除无用的材质属性]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103445273</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103445273</guid><author>Rhett_Yuan</author><pubDate>Sun, 08 Dec 2019 23:06:20 +0800</pubDate><description><![CDATA[当我们在unity中使用材质的时候，我们会发现，当这个材质切换到上一个shader的时候，我们那个shader的属性都会保存，包括贴图，在上个项目的优化过程中，我们TA也发现，一个material材质依赖了它没有的属性贴图，这个是unity的自身设计导致，但是如果它依赖了其他的资源，那么就可能造成不必要的资源冗余等问题，简单来说就是寻找一种方法可以将材质中保存的无用属性剔除，在看了...]]></description><category></category></item><item><title><![CDATA[Jenkin-Unity打包获取之Unity获取Jenkins参数配置]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103149025</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/103149025</guid><author>Rhett_Yuan</author><pubDate>Tue, 19 Nov 2019 19:20:26 +0800</pubDate><description><![CDATA[项目最初始的Jenkins构建中，会根据不同的参数去对应执行unity中不同的打包函数，这个带来了巨多的不变性，于是设想可以在Unity中获取Jenkins的打包参数，其实就是获取运行时的环境变量，不过为了更方便的使用，我们可以将其进行封装一下，代码如下：


public enum CommandArgsName
{
    Args1,
}
public class CommandLineTo...]]></description><category></category></item><item><title><![CDATA[Unity-Shader之遍历工程中的shader并生成shader的变体统计]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/102933615</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/102933615</guid><author>Rhett_Yuan</author><pubDate>Wed, 06 Nov 2019 13:48:18 +0800</pubDate><description><![CDATA[项目优化总有一项是对Shader的优化，想要找出每个shader的变体数量


[MenuItem("Tools/AAAAAAAAAAAA")]
    public static void GetAllShaderVariantCount()
    {
        Assembly asm = Assembly.LoadFile(@"D:\Unity\Unity2018.4.7f1\Edi...]]></description><category></category></item><item><title><![CDATA[Tencent-InjectFix热更新调研——工程使用]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/102838008</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/102838008</guid><author>Rhett_Yuan</author><pubDate>Fri, 01 Nov 2019 16:25:31 +0800</pubDate><description><![CDATA[承接上篇Tencent-InjectFix热更新调研——Demo使用，这一篇我们来看下怎样在实际工程中使用该插件，以及它能支持哪些热更，以及一些踩过的坑。

   初始使用的时候，我们在出整包的时候失败，出现一些错误，也在官方作者的主页下进行了咨询，感兴趣的可以查看IFix.IDMAP问题，主要是我们的代码中使用了太多的第三方插件，看了下源码，会每一个函数都记一个索引，简单的...]]></description><category></category></item><item><title><![CDATA[Tencent-InjectFix热更新调研——Demo使用]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/101758102</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/101758102</guid><author>Rhett_Yuan</author><pubDate>Mon, 30 Sep 2019 11:18:18 +0800</pubDate><description><![CDATA[继XLua后腾讯又开源了InjectFix热更新修复方案，可以实现在Unity线上客户端内，不用迭代新版本，就能快速修复游戏的线上bug，InjectFix开源地址：https://github.com/Tencent/InjectFix

接下来我们简单熟悉下例子工程，首先clone出来我们的工程，在Source/VSProj中双击build_for_unity来编译工程

unity打开对应的...]]></description><category></category></item><item><title><![CDATA[性能优化点以及标准]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/99414585</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/99414585</guid><author>Rhett_Yuan</author><pubDate>Tue, 10 Sep 2019 13:50:02 +0800</pubDate><description><![CDATA[CPU模块：

参考UWA文章：https://blog.uwa4d.com/archives/optimzation_cpu.html

主要看帧率 超过33ms的比率占比控制在10-15%，超过50ms的比率控制在5%

1、渲染模块：

  不透明物体渲染耗时

  半透明物体渲染耗时

  渲染Triangle值（UWA低端设备推荐值）：&lt;20W

  顶点数...]]></description><category></category></item><item><title><![CDATA[Unity修改分辨率优化游戏性能]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/96303353</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/96303353</guid><author>Rhett_Yuan</author><pubDate>Thu, 01 Aug 2019 18:08:50 +0800</pubDate><description><![CDATA[前两天浏览到腾讯游戏学院上的一篇文章，利用 RenderTexture 降低实际渲染分辨率以提升渲染性能，结合着我们自己的项目，对这一方案进行的探索研究。

关于修改游戏分辨率来提高游戏性能有另种方案：

第一种：使用unity引擎自身的API进行修改，Screen.SetResolution此时修改的是物理分辨率，具体底层实现涉及到底层图形渲染的可自行查找相关资料，此时有一个问题，调用此API...]]></description><category></category></item><item><title><![CDATA[批量解析AssetBundle]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/94549902</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/94549902</guid><author>Rhett_Yuan</author><pubDate>Wed, 03 Jul 2019 09:59:39 +0800</pubDate><description><![CDATA[最近看项目中的bugly记录，发现一些奇怪的问题，包内的bundle会出现莫名的损坏情况（概率性的出现），问题如图：



对于CAB开头的信息我们根本无法明文解析出是那个bundle出了问题，于是想着可以批量将bundle解析出来，至于单个怎么解析，可以查看这篇文章，如何查看AssetBundle中的内容，有了这个依据，便可以使用批处理进行解析：


@echo off 
set work_p...]]></description><category></category></item><item><title><![CDATA[AssetBundle单个Assets打成bundle和多个Asset打成一个Bundle加载分析（二）]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/93617880</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/93617880</guid><author>Rhett_Yuan</author><pubDate>Tue, 25 Jun 2019 14:23:56 +0800</pubDate><description><![CDATA[上文中测试了Load的时间效率，同事又提出此种情况下LoadAsset的情况，于是加入LoadAsset的实验数据，由于Unity自身的Bundle的LoadAsset立马unload的bug，使用协程来实验，但是只统计加载和Load的时间：

代码如下：


private IEnumerator LoadTatal()
    {
            string[] tempArr = ...]]></description><category></category></item><item><title><![CDATA[AssetBundle单个Assets打成bundle和多个Asset打成一个Bundle加载分析（一）]]></title><link>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/93488521</link><guid>https://blog.youkuaiyun.com/Rhett_Yuan/article/details/93488521</guid><author>Rhett_Yuan</author><pubDate>Mon, 24 Jun 2019 15:52:10 +0800</pubDate><description><![CDATA[最近在参与AssetBundle划分策略的讨论，关于AssetBundle的细分方面，记得上个项目的时候主程说过，IOS有一个限制文件句柄的问题，还有5.3之前Android的SerializeFile每一个都是512K，不过这些问题在新的版本中都已经解决，但是是否bundle越大越好，或者是越细碎越好呢？简单做了一个测试，将大概80个图片单打成一个bundle大概1M以及打成80个不同的bund...]]></description><category></category></item></channel></rss>