- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 留个档,Unity C#, List有序队列排序, List.Sort 和 手动判断大小List.Insert插入性能对比。
List.Sort 和 手动判断大小List.Insert插入性能对比
2024-02-20 17:29:43
191
原创 留个档,Unity Animator state节点的Motion动态替换AnimationClip
利用AnimatorOverrideController,GetOverrides 和 ApplyOverrides,对Animator的state进行大量替换。
2023-06-20 10:01:53
2346
原创 留个档,Unity Navigation. 动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh
运行时,动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh。根据unity官方的demo,解析一下,发现动态创建NavMesh导航并不难.简化写法如下,是不是需要缓存某些信息,就看具体逻辑实现了。其实只需要 网格信息,还有 需要创建的范围即可。可以认为是固定公式了。
2022-12-29 20:32:39
1541
1
原创 造个轮子,Unity UGUI 循环对象池ScrollView
造个轮子,Unity UGUI 循环对象池ScrollView。只用Mask做显示切割,不依赖其他任何UGUI控件,一个纯粹的轮子。
2022-08-18 10:57:25
983
原创 留个档,Unity下,利用TexturePacker命令行自动化创建图集
需要大量处理优化合并工作的时候,筛选图片后一个一个去点,再处理引用太过于麻烦,于是需要接入一个可以unity里面操作Pack图集的方案。so就有了下面的代码。TexturePacker的命令行太复杂了,于是找个简单的办法,我们可以自由的操作文本,那么先做好tps配置,让TexturePacker去Publish就好了。注意一点: tps文件有格式要求需要无bom的UTF8<?xml version="1.0" encoding="UTF-8"?><data version="1.
2021-12-22 17:55:30
2366
原创 ParticleSystemRenderer.sharedMaterial赋值新材质无效问题记录
错误写法ParticleSystemRenderer psr = gameObject.GetComponent<ParticleSystemRenderer>();psr.sharedMaterials[0] = newMat正确写法ParticleSystemRenderer psr = gameObject.GetComponent<ParticleSystemRenderer>();Material[] arrMat = psr.sharedMaterials
2021-12-22 17:49:25
415
原创 留个档,Unity的资源反向引用查询
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.IO;using System.Linq;using System;using System.Text;using System.Reflection;public class ReverseDependencies{ [MenuItem("优化工具/反向引用/刷新"
2021-12-15 17:42:25
2364
原创 留个档,Unity的Xcode后处理
using UnityEditor;using UnityEditor.Callbacks;using UnityEditor.iOS.Xcode;using UnityEngine;[PostProcessBuild(999)]public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)获取 子工程GUIDstring projPath = PBXProject.GetPBXPro
2021-11-19 11:52:58
5279
原创 xcode学习笔记
ins分享:遇到很神奇的问题,游戏是横屏,用documentController处理分享,会出现 帖子没有键盘,快拍布局错误,按钮点不动的情况。于是尝试使用 外链命令的方法,发现没有直接的图片上传命令可以用。外链拉起后,默认选取相册第一张照片。 所以有了下面的尝试。尝试了UIKit的方法//UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), Docum
2021-11-18 17:45:20
4278
原创 留个档,MonoBehaviour对象池
using System.Collections;using System.Collections.Generic;using UnityEngine;public class MonoPool<T> where T : MonoBehaviour{ private bool m_isAutoActive = false; // 自动Active, 获取true,释放false // 注: 大量SetParent会导致性能降低 private Transform m_tra
2021-09-29 17:04:51
210
原创 留个档,Google Play Asset Delivery,分包,替换OBB方案
unity导出 Android Studio工程右键项目->new->module,起名install_time_pack清理干净路径,保留gradle,保留src-main路径install_time_pack 的gradle代码:apply plugin: 'com.android.asset-pack'assetPack { // packName 的名称可更改,但是要和配置对应上 packName = "install_time_pack" dyn.
2021-09-08 09:29:41
1950
原创 增量资源热更以及版控方案
例如,需要下载5000个文件,那么下载第4998,4999个文件的时候,按照常规的WriteAll保存方法,重复写入之前4000多条记录。常规的解法,是路径唯一,当玩家请求的站点不存在资源,那就会从源站点抓取。所以在增量版控的设计里,每一个版本的路径都是唯一的,旧版本的资源不需要动,新版本是新路径,就能保证玩家下载的资源一定没有问题。所以可以理解为,用文本冗余导致的加载本地记录IO带宽增加,和解析本地记录的耗时,来兑换运行时的写入效率。这样玩家下载资源时候,会去最近的一个站点下载,达到了加速的效果。
2021-09-01 14:34:34
267
原创 Unity接入AWS S3过程,AWS SDK for Unity 踩坑记录
AWS S3,亚马逊的资源服务器服务,最近在研究这一块内容。记录一下踩坑的内容。AWS SDK研究了aws sdk for unity和for .net 两部分AWS SDK的API命名不管啥平台都差不多,主要分3个系列list 查询get 获取,下载put 上传主要的接口:初始化AmazonS3Clientm_AWSClient = new AmazonS3Client(new BasicAWSCredentials(strAccessKey, strSecretKey), reg
2021-09-01 11:18:10
1763
原创 [一个小测试]Unity SceneManager的Unload能不能卸载被挪出Scene的节点
因为SceneManager里面有Unload的API,所以就突发奇想了一个问题。如果当前正在运行默认场景a,然后用addtive的模式加载了一个新场景b,那么场景b里面的东西被挪走了,那么通过SceneManager.unload卸载场景的时候,会不会把被挪走的东西给卸载掉。于是做了测试:默认场景3, Addtive模式加载了场景1和场景2然后我把场景1给卸载掉,看上去卸载的很干净。在图1的基础上,我把1和4 ,2个节点挪到了默认场景3再卸载场景1.哦吼,场景1被卸载了,但是节点1 和
2021-07-12 16:26:58
1232
2
原创 留个档,毛玻璃效果
懒得百度了,留个档脚本using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class BlurMaskCtrl : MonoBehaviour{ [SerializeField] Camera m_uicamera = null; [SerializeField] RawImage m_RawImage = null;
2021-05-20 09:57:10
158
原创 留个档,计算圆上的一个点
已知圆心,半径,角度,求圆上的一个点懒得百度,自己留个档 Vector3 result = Vector3.zero; result.x = pos.x + nRadius * Mathf.Cos(nAngle * Mathf.PI / (float)180); result.z = pos.z + nRadius * Mathf.Sin(nAngle * Mathf.PI / (float)180); return result;程序
2021-05-20 09:51:14
103
原创 浅谈Unity的Meta文件作用和prefab等文件文本内容解析
Unity里的所有文件都是文本格式,可以看到内容。Meta文件格式:(不同文件,可能第三行开始内容会不同)fileFormatVersion: 2guid: 8c37735a974bb7f4a8fa831a31dff02aPrefabImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant:文件导入unity之后,会自动生成meta文件。Meta文件主要记录内容是 GUID 和 文
2021-04-22 11:49:53
3228
原创 Unity下,在不规则斜坡上移动解决方案和推导过程
假设有一个上下的旋转楼梯,人物按照第三人称向前移动,爬上楼梯那么这个楼梯就成为了一个斜坡我们来套用 unity的常规移动方案 的话1.Transform.Translate;常规的移动方案,向前走,在斜坡的状态下,人物会嵌入地面,然后再由物理系统把人弹出地面碰撞,就会出现人物上下抖动,摄像机如果是挂在人物节点下面 跟随移动,那估计得眼花了2.Rigidbody.MovePosition3.Rigidbody.AddForce物理移动方案,是在不规则地形时比较好用的方案,但是实际使用的时候会发
2021-03-26 11:18:06
8182
3
原创 注册苹果开发者,登录后提示Need assistance with accessing your developer account?解决过程
注册苹果开发者,登入后只会看到一个网页,显示下面的内容:Need assistance with accessing your developer account?If you’re having issues accessing your developer account, complete the form below to contact Apple Developer Program Support. If you need assistance with recovering your Ap
2021-03-25 10:09:46
9940
原创 Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(语法逻辑整理版本,含测试代码)
前篇:Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)https://blog.csdn.net/qq_37776196/article/details/114667670整理了语法和逻辑,拆分了会让人难以理解的连写代码。我是很讨厌连写代码的, 大量的三元运算和一行代码中多个赋值操作。下面再附送一段测试代码public class Tween{ public static float GetTime(float time, floa
2021-03-11 16:23:02
1865
1
原创 Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)
原文地址:https://blog.csdn.net/jebe7282/article/details/7521067/原因是因为现在在Unity里用曲线,要不就自己AnimationCurve自己扭一个曲线出来。要不就下载插件。然鹅,插件都封装了DLL, 我只用曲线,也不需要其他功能,买个插件岂不是浪费(不喜欢用盗版)。 找到一篇不是C#的tween算法,于是进行一波翻译。public class Tween{ public static float GetTime(float time, fl
2021-03-11 15:19:25
1102
1
原创 Unity下,移动撞墙后抖动的解决方案
Unity下的移动方案:1.Rigidbody.MovePosition2.Rigidbody.AddForce3.Transform.Translate;Transform.position = vector3;目前主要分这三大类的移动方式。1和2是物理移动方式3是实体对象坐标的移动方式然后说说题目,为啥会抖动呐:public class Test : MonoBehaviour{ public float m_nSpeed = 0; void Update() {
2021-03-10 17:19:17
2768
4
原创 留个档,一篇Shader,物体坐标移动获得世界坐标下的颜色渐变
物体坐标移动获得世界坐标下的颜色渐变这个东西,东拼西凑写出来的。我不懂shader,但是知道原理。就各种百度东拼西凑,结果看上去还不错。Shader "Custom/ColorTransFromTo"{ Properties { _Color("Color", Color) = (1,1,1,1) _Color2("Color2", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} _Glossiness(
2021-03-09 14:54:23
338
原创 留个档,Unity自定义曲线,Unity画曲线,贝塞尔曲线
网上有很多贝塞尔曲线实现原理,这篇给自己留个档,好用就行。using UnityEngine;public class BezierCurve: MonoBehaviour{ /// <summary> /// 曲线上的点数量; /// </summary> [SerializeField] int m_nPointCount = 50; [SerializeField] Transform[] m_arrTransDocks = nu
2021-03-02 10:57:58
411
原创 留个档,Unity,C#,摄像机抖动 CameraShake
参考2019-03-15 【UnityTips】【曲线】 CameraShake.cs 带曲线操作的相机小恶魔作者:持刀的要迟到了链接using UnityEngine;public class CameraShake : MonoBehaviour{ private static CameraShake m_this = null; public static CameraShake Instance { get {
2021-03-01 18:12:03
283
1
原创 留个档,Unity,C#,物理抛物线计算公式,经常用一直百度公式烦死了,留个档
不是数学里的对称抛物线,是根据 加速度公式 s=v0t + 1/2vt平方,算Y轴和X轴位移, 看起来更像物理抛物线 [SerializeField] Transform m_trans = null; [SerializeField] float m_nV0 = 10; [SerializeField] Vector3 m_v3Dir = Vector3.zero; [SerializeField] float m_nGForce = -9; // 重力加速度
2021-03-01 14:05:41
639
原创 Unity下的UI框架的推导和搭建 以及 消息通讯机制对于解耦的实际应用
UI应该是一个独立的模块需要与其他模块之间低耦合,或者0耦合。稍微简述一下解耦和利弊:解耦通常的方案是用消息通讯机制来传递事件和数据。比较好用的方案 可以搜索看看 CSharpMessenger实现原理其实很简单,很多文章都有。是用一个 唯一key对应delegate,保存在字典里。用的时候,找到key,Invoke对应的delegate就可以了。解耦的弊端:那带来的问题是 逻辑的断层,调试时候,会发现在调用delegate这一步断开了,调试器找不到之前或者之后的逻辑,所以就需要人工的查找
2021-02-24 10:36:01
763
1
原创 留个档,批量给BuildSetting设置图片,不用手一个一个拖
直接上代码,批量给BuildSetting设置图片,不用手一个一个拖/* * Icon路径:Application.dataPath + "/Res/Icon/"; * 工程路径"Assets/Res/Icon/"下,放icon图片; * Icon文件名 : * icon32 * icon64 * icon1024 * * * BuildSetting不会自动刷新,需要关闭页签,重新打开后可以看到变化; * 实际上是Set成功的
2021-01-27 14:18:19
254
原创 简单易懂的Socket TCP网络通讯知识-粘包,拆包,包体长度的意义
粘包 和 拆包百度一下很多文章都有解释的链接:MSS.MTU.原因的话,就是网络层级故意给你搞的。TCP下,也没啥必要纠结这一块东西。简单来说,就是 粘包就是 接收端一次收到2个包拆包 就是 接收端里 有一个包不完整,只有一部分。拆包 和 粘包 可能混合出现。解决这个问题最好的办法,其实就是 数据包 有长度。按照长度去获取 数据包,发现包体不完整,就等下一次Check。例如完整数据包 + 破损数据包(粘包 + 拆包,经常出现 很正常)破损数据包(拆包,可能是你缓冲区太小了,单个数
2020-12-06 15:37:38
606
原创 简单易懂的Socket TCP网络通讯知识-消息协议和数据包
不管用的是什么样的协议方式,基本通讯的原理到底层 都是 byte[]数组 传递。1.协议的定义协议本身只是 通讯时候 前后端 定义的变量类型和顺序的集合。比如说,要做一个登陆的消息传递,需要传递的内容是帐号密码public class MsgLogin{ public string m_strIDName = null; public string m_strPassWord = null;}前后端都确认好,使用帐号密码登陆,那么这样一个类,就可以称之为一个协议了。那么
2020-12-06 15:12:17
881
原创 [一个小测试]Unity的AssetBundle重新引用依赖项,是否可以成功?20200727更新
最近突然想到个问题。ab加载的策略,能不能加速那。想着想着 就想到个方案:如果某个UI的Prefab:a 依赖一个图片:b,a和b都打包成ab.按照unity的ab相关文章的说法,要加载并显示出a,需要在a之前加载到b,就很多文章写的 assetbundlemanifest的用法。所以我就在想, 如果按照顺序 加载b,加载a,然后显示。这时候a不需要用了,隐藏a,卸载b。等要用了,...
2020-04-22 15:50:04
402
1
原创 留个档,动态给UGUI绑定事件的delagete工具类
直接上代码,动态给UGUI绑定事件的delagete工具类using Fox.Common;using UnityEngine;using UnityEngine.EventSystems;namespace Fox.UI.EventListener{ /// <summary> /// 事件监听类 /// 使用方法:UIEventListener.Get(gameO......
2019-12-10 14:54:51
165
原创 [一个小测试]Unity Coroutine协程可以包含返回值
话不多说,直接上代码:using System.Collections;using UnityEngine;public class NewBehaviourScript : MonoBehaviour{ private int m_nStep = 0; void Start() { StartCoroutine(RunCoroutine()); } ...
2019-12-04 16:05:21
2821
原创 UnityEditor下调用命令行编译外部sln工程
UnityEditor下编译外部sln工程。//先用File删除原来的DLL//编译DLL------------------------------------------------string strMSBuildPath = "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe";string strSlnTarg...
2019-09-27 11:05:10
830
原创 “SingleCoroutine”。用GameObject.Active来管理协程Coroutine的方案
因为Coroutine有各种开启方法StartCoroutine(字符串);StartCoroutine(函数);StopCoroutine(字符串);StopCoroutine(函数);StopAllCoroutines();用过就会知道 开启和停止的调用比较混乱。用字符串启动,可以用字符串停止。用函数名启动,无法用函数名停止。1.为了解决这个对应关系,所以可以考虑到Corou...
2019-06-26 19:27:42
303
1
FoxLoader_UnityDemo_v1_0_0.rar
2019-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人