
游戏算法
神一般的狄狄
....字数不够我的签名...............
展开
-
造个轮子,Unity UGUI 循环对象池ScrollView
造个轮子,Unity UGUI 循环对象池ScrollView。只用Mask做显示切割,不依赖其他任何UGUI控件,一个纯粹的轮子。原创 2022-08-18 10:57:25 · 1043 阅读 · 0 评论 -
留个档,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 · 2480 阅读 · 0 评论 -
留个档,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 · 2456 阅读 · 0 评论 -
留个档,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 · 264 阅读 · 0 评论 -
增量资源热更以及版控方案
例如,需要下载5000个文件,那么下载第4998,4999个文件的时候,按照常规的WriteAll保存方法,重复写入之前4000多条记录。常规的解法,是路径唯一,当玩家请求的站点不存在资源,那就会从源站点抓取。所以在增量版控的设计里,每一个版本的路径都是唯一的,旧版本的资源不需要动,新版本是新路径,就能保证玩家下载的资源一定没有问题。所以可以理解为,用文本冗余导致的加载本地记录IO带宽增加,和解析本地记录的耗时,来兑换运行时的写入效率。这样玩家下载资源时候,会去最近的一个站点下载,达到了加速的效果。原创 2021-09-01 14:34:34 · 327 阅读 · 0 评论 -
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 · 1996 阅读 · 0 评论 -
留个档,毛玻璃效果
懒得百度了,留个档脚本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 · 190 阅读 · 0 评论 -
留个档,计算圆上的一个点
已知圆心,半径,角度,求圆上的一个点懒得百度,自己留个档 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 · 129 阅读 · 0 评论 -
Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(语法逻辑整理版本,含测试代码)
前篇:Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)https://blog.youkuaiyun.com/qq_37776196/article/details/114667670整理了语法和逻辑,拆分了会让人难以理解的连写代码。我是很讨厌连写代码的, 大量的三元运算和一行代码中多个赋值操作。下面再附送一段测试代码public class Tween{ public static float GetTime(float time, floa原创 2021-03-11 16:23:02 · 2066 阅读 · 1 评论 -
Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)
原文地址:https://blog.youkuaiyun.com/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 · 1195 阅读 · 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 · 3244 阅读 · 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 · 397 阅读 · 0 评论 -
留个档,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 · 465 阅读 · 0 评论 -
留个档,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 · 325 阅读 · 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 · 718 阅读 · 0 评论