自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 [学习日志]UI如何与数据绑定?

角色详细面板面板的一些元素人物立绘人物语音角色名站位等级RANK状态…最简单的情况两个类1个角色详细面板类(UI)1个角色类(数据)需求是什么?显示出角色的详细面板角色类需要依赖面板类吗?面板类会依赖角色类,有角色对象才能在面板显示对应的数据角色类不需要依赖面板类情况举例角色状态不会变面板对象获得角色对象,开启面板时显示一次角色状态角色状态会随时变化面板对象获得角色对象,开启面板后持续显示角色状态角色状态

2022-02-01 21:18:49 494 1

原创 [学习日志]伤害生效由谁来决定?

伤害生效由谁来决定?

2022-01-30 22:05:50 949

原创 [学习日志]记录一下自己设计ScriptableObject的一些思考

记录一下自己设计ScriptableObject的一些思考

2022-01-29 16:11:43 1573

原创 [Unity]简单对象池

文章目录池对象事件对象池对象池工厂示例子弹脚本使用子弹对象池脚本池对象事件接口名IPoolObjectEvent说明需要接受池对象的事件时,可以实现该接口。代码namespace ZeroFramework{ /// <summary> /// 池对象事件接口 /// </summary> public interface IPoolObjectEvent { /// <summary>

2021-08-22 02:32:26 275

原创 [Unity坑]解决在“虚拟机/远程桌面”环境,Input.GetAxis(“Mouse X“)获取永远是0的BUG

流程定位问题,使用Debug.LogError打印日志,再勾选Development Build进行build发现问题,Input.GetAxis("Mouse X"); Input.GetAxis("Mouse Y");,获取结果永远是0搜索相关文章,有类似问题,但是没解决方案测一测其他Unity版本是否也有类似问题(测试是Unity2017,所以怀疑是Unity版本太低),结果Unity2020也出现了这个问题解决问题,Input.GetMouseButton 与 Input.mousePo

2021-07-22 20:02:00 1781 2

原创 [Unity]获取Post-process设置

using UnityEngine;using UnityEngine.Rendering.PostProcessing;public class PPControl : MonoBehaviour{ [SerializeField] private PostProcessVolume _volume; private void Start() { // 获得profile var profile = _volume.profile;

2021-07-20 18:26:35 707 3

原创 [Unity]获取地形的贴图Alpha值

using UnityEngine;public class Test1 : MonoBehaviour{ [SerializeField] private Terrain _terrain; private void Update() { if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(Camera.main.ScreenPointToRay(Inp

2021-07-20 16:52:01 758

原创 [Unity]计算抛体运动轨迹(抛物线)与发射速度

介绍还在学习物理知识中,代码可能出现一些BUG。代码using UnityEngine;public class ZeroPhysicsHelper : MonoBehaviour{ private static Vector3 GetPosX(Vector3 vX, float t) { return vX * t; } private static Vector3 GetPosY(Vector3 vY, Vector3 g, float t)

2021-07-18 21:35:50 907 1

原创 [Unity]GameObject贴合地面脚本

using UnityEditor;using UnityEngine;public class ZeroToolEditor{ private static readonly RaycastHit[] Cache = new RaycastHit[10]; private static Vector3? GetHitPoint(Transform transform) { var count = Physics.RaycastNonAlloc(transf

2021-07-15 12:55:51 1506 1

原创 [Unity]Crest Ocean System增加海面透明度

关键代码Shader: Ocean.shaderSubShader{ Pass { half4 Frag(const Varyings input, const bool i_isFrontFace : SV_IsFrontFace) : SV_Target { // ... return half4(col, 1.); } }增加支持透明复制一个Ocean.shader,修改

2021-07-06 13:20:13 868 1

原创 [Unity]免费的海洋系统Crest Ocean System

Crest Ocean Systemgithubhttps://github.com/wave-harmonic/crest在线文档https://crest.readthedocs.io/en/latest/

2021-07-05 21:40:13 3390 1

原创 [Unity]SUIMONO Water System插件的错误修正

错误:DirectoryNotFoundException: Could not find a part of the path ‘E:\RESOURCES’.原因SUIMONO_Module预设 -> SuimonoModuleLib脚本中的引用丢失解决方案将SUIMONO_Surface预设拖拽到SUIMONO_Module预设 -> SuimonoModuleLib脚本的surfaceObject字段上...

2021-07-05 17:08:16 417

原创 使用书签修改视频播放速度(javascript:)

增加书签网址输入以下内容javascript:document.querySelector('video').playbackRate = 2.0;2.0是2倍速,根据需要自行修改速度。使用方法打开视频后,点一下书签即可修改视频速度。(如果没有改变视频速度,就代表对该视频无效)...

2021-06-24 19:06:44 466

原创 Hook 迅游手游加速器

说明迅游加速器用了 360加固 ,启动后会通过附加自己的方式来阻止 Frida 附加进程。可以通过 spawn 函数启动进程,第一时间获取 pid 并附加。JS代码Java.perform(function () { var application = Java.use("android.app.Application"); application.attach.overload('android.content.Context').implementation =

2021-05-28 19:08:59 644 1

原创 IDA屏蔽登录弹窗分析过程

打开IDA从桌面打开IDA选择文件(我一般选择Go比较多,因为拖拽的方式太方便了)搜索弹窗的字符串打开字符串窗口快捷键是 Shift+F12设置字符串的类型按截图上的设置即可,否则不显示中文。(注意的是:不是所有的字符串都能搜索,遇到字符串加密或者非硬编码字符串就无法搜索到)搜索字符串输入 过期 第一个就是,双击进入显示中文字符串双击后是乱码,因为没有设置字符串编码设置字符串编码打开菜单 Options - String Literals…快捷键是 Alt+A.

2021-05-25 15:18:05 760 1

原创 获取x-sign/x-mini-wua/x-sgext/x-umt

文章目录获取x-sign/x-mini-wua/x-sgext/x-umt获取应用上下文获取Mtop获取MtopConfig从MtopConfig获得sign对象创建参数并调用获取x-sign/x-mini-wua/x-sgext/x-umt获取应用上下文APP里有个Globals类,有静态方法可以获取应用上下文var Globals = Java.use('com.taobao.tao.Globals')var context = Globals.getApplication().getAp

2021-05-23 17:55:43 1949 6

原创 检测鼠标位置是否有UI

示例using System;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class MyTest : MonoBehaviour{ private GraphicRaycaster _graphicRaycaster; // 图形射线发射器 private void Start() {

2021-05-04 14:25:52 99

原创 转发UGUI事件响应

示例:点击UI时,被遮挡的UI也响应using System.Collections;using System.Collections.Generic;using System.Linq;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ClollideUI : MonoBehaviour, IPointerClickHandler{ private bool _to

2021-05-04 14:24:27 75

原创 3D物体使用UGUI事件

必须条件场景中有 Physics Raycaster 组件3D物体 有 碰撞器(Collider) 组件写脚本继承 事件系统处理器接口(IEventSystemHandler) 或 添加 Event Trigger 组件将脚本挂载到 3D物体 上示例using UnityEngine;using UnityEngine.EventSystems;public class ClickThreeD : MonoBehaviour, IPointerClickHandler{ pr

2021-05-04 14:22:35 85

原创 Lua学习笔记

环境配置Unity 2020.3.3f1 + XLua + Rider创建 Unity 的 单元测试用 XLua 加载 Lua脚本在 Rider 中运行 单元测试注释-- 单行注释--[[多行注释多行注释多行注释--]] 标识符字母、下划线、数字(不能以数字开头)区分大小写关键字-- 遍历全局变量for n in pairs(_G) do print(n) end一般约定:以下划线开头连接一大串大写字母的名字(如_VERSION),被保留用于Lua内

2021-04-29 13:28:06 541

原创 Unity单元测试流程

环境Unity 2020.3.3f1流程1. 创建一个存放 单元测试程序集 的目录我建立一个 Tests 的目录来存放程序集2. 打开 Test Runner 窗口在Unity编辑器中,选择 Window -> General -> Test Runner3. 选择单元测试模式4. 创建单元测试程序集确定现在选择的是存放目录(我这里是Tests)按下 Test Runner 窗口的 Create (PlayMode|EditMode) Test Assembl

2021-04-26 13:04:37 2135 4

原创 使用URL打开文件夹

示例 : 打开资产目录// 需要加前缀Application.OpenURL("file:///" + folderPath);// * 推荐使用Uri类,会将路径进行转换var folderPath = Application.dataPath;var uri = new Uri(folderPath);Application.OpenURL(uri.AbsoluteUri); // file:///E:/Gitee/xxx/Assets注意点不支持中文路径...

2021-04-26 12:41:50 716

原创 Addressables学习笔记

资源引用AssetReference资产引用参考AssetReference属性Asset加载的资产AssetReferenceT泛型资产引用参考AssetReferenceTAssetLabelReference资产标签引用用来加载一组标签资产参考AssetLabelReferenceAsyncOperationHandle异步加载返回的类型属性Result异步加载的结果,加载失败时为nullStatus : AsyncOperationStat

2021-04-26 10:52:47 1471

原创 单元测试时调用 Debug.Break() 无效

解决方案在 Debug.Break() 后等待一帧示例[UnityTest]public IEnumerator TestDebugBreak(){ Debug.Log("编辑器暂停"); Debug.Break(); yield return null; // 等待一帧 Debug.Log("编辑器恢复");}

2021-04-18 20:24:13 276

原创 粒子系统的Particle是结构

错误示例// currentParticle是复制值,对currentParticle的任何修改都不会影响_currentParticles[i]var currentParticle = _currentParticles[i];// 设置淡出时间const float fateTime = 0.5f;if (currentParticle.remainingLifetime > fateTime){ currentParticle.remainingLifetime = fa

2021-04-18 00:23:30 88

原创 [台服公主链接]提取global-metadata.dat

流程使用 IDA 分析 libil2cpp.so找到关键函数:il2cpp::vm::MetadataLoader::LoadMetadataFile在函数头部有一段内存,就是 global-metadata.dat使用脚本把内存dump出来然后就可以用 Il2CppDumper 获取函数名与所在函数地址了。dump脚本static main(){auto i,fp;fp = fopen("D:\\global-metadata.dat","wb");auto start = 内存

2021-04-13 23:14:24 2797

原创 [台服公主链接]修改模拟器检测

类路径Project\smali\jp\co\cygames\emulatordetector原始代码# virtual methods.method public IsEmulator(Ljp/co/cygames/emulatordetector/AndroidEmulatorDetectCallback;)V .locals 2 .param p1, "callback" # Ljp/co/cygames/emulatordetector/AndroidEmulatorD

2021-04-13 23:02:39 286 2

原创 [台服公主链接]修改ROOT检测

类路径Project\smali\jp\co\cygames\androidroot\CheckApp.smali原始代码.method public static isRootUser()Z .locals 7 .prologue const/4 v4, 0x0 .line 14 sget-object v0, Lcom/unity3d/player/UnityPlayer;->currentActivity:Landroid/app/Activit

2021-04-13 23:00:15 426 1

原创 引用UnityEditor命名空间后无法编译

原因引用 UnityEditor命名空间 的脚本需要放在 Editor目录 下。代码using UnityEngine;using UnityEditor;public class BuildEditor{ [MenuItem("Menu/Button")] private static void ButtonClick() { Debug.Log("点击"); }}报错信息Assets\Scripts\BuildEditor.cs(

2021-04-13 22:53:07 3389

原创 里氏替换原则示例

里氏替换原则当你扩展一个类时,记住你应该要能在不修改客户端代码的情况下将子类的对象作为父类对象进行传递。一句话概述:子类对象可以替换父类对象,而程序逻辑不变。代码using System;public class Porgram{ public class Food { } public class Apple : Food { } public class Parent { public virtual

2021-04-09 17:16:51 261 1

原创 BeginInvoke 和 EndInvoke

异步编程其他异步编程模式三种标准模式BeginInvoke 和 EndInvokeusing System;using System.Threading;namespace Test.NET_Framework{ public delegate int MyDel(int a, int b); class Program { public static int Sum(int a, int b) { Con

2021-04-09 09:36:33 145

原创 [GameFramework分析] Log(日志)

文章目录使用分析Unity脚本LogLogScriptingDefineSymbolsScriptingDefineSymbols框架类GameFrameworkLogLevelGameFrameworkLog.ILogHelperGameFrameworkLog类图LogGameFrameworkLog使用// 调试日志Log.Debug("Hello, world!");// 信息日志Log.Info("Hello, world!");// 警告日志Log.Warning("Hello,

2021-04-07 13:02:57 738

原创 使用代码打开Unity编辑器的窗口

打开Animation窗口方式1:使用EditorApplication.ExecuteMenuItemEditorApplication.ExecuteMenuItem("Window/Animation/Animation");方式2:使用反射// 获得Animation窗口类型var windowType = typeof(EditorWindow).Assembly.GetType("UnityEditor.AnimationWindow");// 获得Editor窗口var edi

2021-04-06 21:03:24 1238

原创 设计模式分类

设计模式分类创建型模式创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。工厂方法模式(虚拟构造函数、Virtual Constructor、Factory Method)其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。抽象工厂模式(Abstract Factory)它能创建一系列相关的对象, 而无需指定其具体类。生成器模式(建造者模式、Builder)使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。原型

2021-04-04 21:40:31 97

原创 面向对象的设计原则

SOLID原则S:单一职责原则 Single Responsibility Principle修改一个类的原因只能有一个。O:开闭原则 Open/closed Principle对于扩展,类应该是“开放”的;对于修改,类则应是“封闭”的。L:里氏替换原则 Liskov Substitution Principle当你扩展一个类时, 记住你应该要能在不修改客户端 代码的情况下将子类的对象作为父类对象进行传递。I:接口隔离原则 Interface Segregation Princip

2021-04-04 21:35:54 58 1

原创 Unity反射笔记

获取指定基类的所有子类类型使用反射/// <summary>/// 获取指定基类的所有子类类型/// </summary>/// <param name="typeBase">基类</param>/// <returns>指定基类的所有子类类型</returns>public static IEnumerable<Type> GetTypes(Type typeBase){ return AppDom

2021-04-04 21:27:35 283

原创 Frida笔记

安卓安装&运行服务器// 推送到手机adb push ns /data/local/tmp/// 设置权限adb shell "chmod 755 /data/local/tmp/ns"// 运行adb shell "/data/local/tmp/ns &"转发端口adb forward tcp:8080 tcp:8080查看进程frida-ps -U// 更改端口时frida-ps -H 127.0.0.1:8080加载脚本frida -H 127.

2021-04-04 21:20:37 442 1

原创 SOLID原则

S:单一职责原则 Single Responsibility Principle修改一个类的原因只能有一个。示例我们有几个理由来对 员工(Employee)类 进行修改。与该类的主要工作(管理雇员数据)有关。时间表报告的格式可能会随着时间而改变,从而使你需要对类中的代码进行修改。解决该问题的方法是将与打印时间表报告相关的行为移动到一个单独的类中。这个改变让你能将其他与报告相关的内容移动到一个新的类中。O:开闭原则 Open/closed Principle对于扩展,类

2021-04-01 20:29:15 115

原创 CodeMonkey技巧

全局资源将资源引用存为预设使用单例模式,在创建实例时加载预设使用资源时,只需要调用该单例/* ------------------- Code Monkey ------------------- Thank you for downloading the Code Monkey Utilities I hope you find them useful in your projects If you have any questions use the co

2021-03-31 17:26:42 521

原创 C# 7.0本质论(设计规范)

文章目录C#概述C#语法基础标识符类型定义使用变量变量的声明注释数据类型基本数值类型整数类型字面值更多基本类型字符串更多数据类型可空修饰符隐式类型的局部变量元组操作符和控制流程操作符二元算术操作符(+,-,*,/,%)递增和递减操作符(++,--)常量表达式和常量符号代码块布尔表达式条件操作符(?:)控制流程语句(续)for循环基本switch语句跳转语句goto语句方法和参数方法的调用命名空间方法的声明参数声明高级方法参数参数数组(params)可选参数用异常实现基本的错误处理捕捉错误使用throw语句报

2021-03-31 17:24:05 1482

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除