Unity
罪の一十一
这个作者很懒,什么都没留下…
展开
-
[学习日志]UI如何与数据绑定?
角色详细面板面板的一些元素人物立绘人物语音角色名站位等级RANK状态…最简单的情况两个类1个角色详细面板类(UI)1个角色类(数据)需求是什么?显示出角色的详细面板角色类需要依赖面板类吗?面板类会依赖角色类,有角色对象才能在面板显示对应的数据角色类不需要依赖面板类情况举例角色状态不会变面板对象获得角色对象,开启面板时显示一次角色状态角色状态会随时变化面板对象获得角色对象,开启面板后持续显示角色状态角色状态原创 2022-02-01 21:18:49 · 492 阅读 · 1 评论 -
[学习日志]伤害生效由谁来决定?
伤害生效由谁来决定?原创 2022-01-30 22:05:50 · 949 阅读 · 0 评论 -
[学习日志]记录一下自己设计ScriptableObject的一些思考
记录一下自己设计ScriptableObject的一些思考原创 2022-01-29 16:11:43 · 1573 阅读 · 0 评论 -
[Unity]简单对象池
文章目录池对象事件对象池对象池工厂示例子弹脚本使用子弹对象池脚本池对象事件接口名IPoolObjectEvent说明需要接受池对象的事件时,可以实现该接口。代码namespace ZeroFramework{ /// <summary> /// 池对象事件接口 /// </summary> public interface IPoolObjectEvent { /// <summary>原创 2021-08-22 02:32:26 · 274 阅读 · 0 评论 -
[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 · 1779 阅读 · 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 · 706 阅读 · 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 阅读 · 0 评论 -
[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 · 1502 阅读 · 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 · 862 阅读 · 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 · 3360 阅读 · 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 · 414 阅读 · 0 评论 -
检测鼠标位置是否有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 阅读 · 0 评论 -
转发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 · 74 阅读 · 0 评论 -
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 · 84 阅读 · 0 评论 -
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 · 538 阅读 · 0 评论 -
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 · 715 阅读 · 0 评论 -
Addressables学习笔记
资源引用AssetReference资产引用参考AssetReference属性Asset加载的资产AssetReferenceT泛型资产引用参考AssetReferenceTAssetLabelReference资产标签引用用来加载一组标签资产参考AssetLabelReferenceAsyncOperationHandle异步加载返回的类型属性Result异步加载的结果,加载失败时为nullStatus : AsyncOperationStat原创 2021-04-26 10:52:47 · 1470 阅读 · 0 评论 -
粒子系统的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 阅读 · 0 评论 -
刚体抖动
解决方案在 FixedUpdate 中更新刚体,不要在 Update 中。设置刚体的 插值原创 2021-03-31 17:14:16 · 168 阅读 · 0 评论 -
同时加载多个场景需要等待一帧
using System.Collections;using UnityEngine;using UnityEngine.SceneManagement;using Zero.Singleton;namespace Zero.SceneLoader{ public class SceneLoader : MonoSingleton<SceneLoader> { private string _loadScene; public voi原创 2021-03-31 17:13:39 · 457 阅读 · 0 评论 -
刚体“下落速度“与“质量“无关
无论刚体 质量 有多大,下落速度都一样。(下落速度应该修改 重力大小 )原创 2021-03-31 17:13:05 · 1691 阅读 · 1 评论 -
单元测试时调用 Debug.Break() 无效
解决方案在 Debug.Break() 后等待一帧示例[UnityTest]public IEnumerator TestDebugBreak(){ Debug.Log("编辑器暂停"); Debug.Break(); yield return null; // 等待一帧 Debug.Log("编辑器恢复");}原创 2021-04-18 20:24:13 · 271 阅读 · 0 评论 -
[台服公主链接]提取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 · 2792 阅读 · 0 评论 -
[台服公主链接]修改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 · 424 阅读 · 1 评论 -
[台服公主链接]修改模拟器检测
类路径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 评论 -
引用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 · 3388 阅读 · 0 评论 -
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 阅读 · 0 评论 -
[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 阅读 · 0 评论 -
使用代码打开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 · 1232 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Unity中的各种坐标
世界坐标可以通过transform.position获得本地坐标/局部坐标/相对坐标相对父物体的坐标可以通过transform.localPosition获得屏幕坐标以像素来定义屏幕左下角为原点(0,0),右上角为(Screen.width,Screen.height)视口坐标相机的左下角为(0,0),右上角为(1,1)GUI坐标左上角为(0,0)...原创 2021-03-31 17:10:49 · 437 阅读 · 0 评论