白泽图

  • 文章
    • Unity渲染
    • Unity项目开发
    • 工具
    • 数学
    • 算法
    • 网站搭建
    • 网络&操作系统
Unity项目开发
Unity项目开发

将点从A方向旋转到B方向(解决两方向平行相反的问题)

Quaternion rotation = Quaternion.FromToRotation(dirA, dirB); return rotation * originalPoint; 通常使用上面方式来将一个点从方向A移动到方向B,但是如果方向A和方向B平行相反时(比如(0,0,1)->(0,0,-1))上面的计算会有问题,此时我们需要指定旋转轴,然后旋转180度,比如 Quaternion rotation = Quaternion.AngleAxis(180f, Vector3.up); return…

2025-08-27 0条评论 10点热度 0人点赞 蒋程 阅读全文
Unity项目开发

Unity Animator.Rebind() 接口会导致TPose

由于项目角色模型内部比较复杂,使用统一的一套骨架,然后各部位SkinnedMeshRender重定向到骨骼,其中有动画文件绑定使用了BlendShape,然后部件是动态加载的,所以用了Animator.Rebind()接口,之所以之前没有发现会Tpose会由于动画文件一直在播,当动画播放一半,将Animator.enabled = false时,使用该接口,会导致TPose,且Animator动画状态都正常,很难查到,此问题是写战斗冰冻效果时,使用Animator.enabled了,然后触发了LOD模型加载,记录下…

2025-08-25 0条评论 13点热度 0人点赞 蒋程 阅读全文
Unity项目开发

使用反向深度拷贝赋值unity对象

当使用ScriptableObject.CreateInstance()复制一份UnityEngine.Object对象时,会获得了一份完全独立的内容,里面的内容都是默认的,如果此时需要将已有一份UnityEngine.Object对象的内容拷贝到新的UnityEngine.Object对象时,可以使用如下代码 public static class DeepCopyByReflection { /// <summary> /// 安全反射创建对象,(亲测:使用反射创建一个没有默认构造(无参)函数的类对…

2025-08-25 0条评论 16点热度 0人点赞 蒋程 阅读全文
Unity项目开发

在Unity中通过反射获取SerializedProperty的值

写编辑器遇到需要通过SerializedObject的SerializedProperty获取其对应的对象(比如需要调用其方法),以下封装一个统一方法,便于以后直接使用 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using System; using System.Reflection; public class ReflectPropertyPath : Mon…

2024-04-10 0条评论 2883点热度 10人点赞 蒋程 阅读全文
Unity项目开发

Unity Hierarchy与Scene窗口的操作限制

记录一下在编写编辑器时对unity的一些操作限制,防止遗忘 static void OnHierarchyGUI(int instanceID, Rect selectionRect) { var e = UnityEngine.Event.current; //禁用 TBCParticleSystem 在Hierarchy面板的右键菜单 if (selectionRect.Contains(e.mousePosition) && e.button == 1 && e.type &l…

2023-11-21 0条评论 3256点热度 1人点赞 蒋程 阅读全文
Unity项目开发

常用Gizmos图形封装

using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TBC { public class TBCGizmos { public enum CapsuleDirection { XAxis, YAxis, ZAxis, } /// <summary> /// 线框球体 /// </summary> public static void DrawWireSphere(Ma…

2023-08-16 0条评论 3447点热度 1人点赞 蒋程 阅读全文
Unity项目开发

使用命令行调用unity案例模板(支持update)

C#脚本 using UnityEngine; using UnityEditor; public class TestClass { // 要调用的函数 public static void TestFunc() { Debug.Log("************* TestFunc ******************"); startTime = Time.realtimeSinceStartup; EditorApplication.update += Run; } static float startTi…

2023-08-14 0条评论 3146点热度 0人点赞 蒋程 阅读全文
Unity项目开发

判断TimelineAsset是否被修改

最近在写一个基于Timeline的编辑器,需要在关闭Timeline编辑器的时候对TBCAsset(继承于TimelineAsset)资源进行保存,并写入一些额外的数据,因为保存有些耗时需要1~2秒,所以需要判定如果只是打开,但并未修改TBCAsset资源点关闭后直接退出 我用EditorUtility.IsDirty来对资源进行判断是否有修改,但发现并不准确,翻看Timeline源码后,发现TimelineAsset的TrackAsset与PlayableAsset资源是通过AssetDatabase.AddOb…

2023-03-08 0条评论 3570点热度 0人点赞 蒋程 阅读全文
Unity项目开发

System.Type.GetMethod获取同名不同参方法

using System; using System.Reflection; class Program { // Methods to get: public void MethodA(int i, int j) { } public void MethodA(int[] i) { } public unsafe void MethodA(int* i) { } public void MethodA(ref int r) {} // Method that takes an out parameter. pub…

2023-02-22 0条评论 3408点热度 1人点赞 蒋程 阅读全文
Unity项目开发

关于PlayableGrahp在编辑器下改变状态无法立即更新的问题

在编辑器下,做playable相关的操作,比如调用PlayableGrahp.Stop()后再执行PlayableGrahp.Play(),但是更新函数没有被调用 解决方法: 调用UnityEditor.EditorApplication.QueuePlayerLoopUpdate(); Normally, a player loop update will occur in the editor when the Scene has been modified.  This method al…

2022-10-28 0条评论 1179点热度 0人点赞 蒋程 阅读全文
12345
分类
  • Unity渲染 / 26篇
  • Unity项目开发 / 44篇
  • 工具 / 20篇
  • 数学 / 2篇
  • 算法 / 1篇
  • 网站搭建 / 4篇
  • 网络&操作系统 / 5篇
最新 热点 随机
最新 热点 随机
将点从A方向旋转到B方向(解决两方向平行相反的问题) Unity Animator.Rebind() 接口会导致TPose 使用反向深度拷贝赋值unity对象 在Unity中通过反射获取SerializedProperty的值 Unity Hierarchy与Scene窗口的操作限制 常用Gizmos图形封装
使用反向深度拷贝赋值unity对象Unity Animator.Rebind() 接口会导致TPose将点从A方向旋转到B方向(解决两方向平行相反的问题)
Unity强行编译接口 UnityShader if判断优化 Lambert光照模型与半Lambert光照模型 使用openvpn as 搭建vpn服务器 CMD 查文件MD5、SHA1、SHA256指令 使用Typora+VLOOK插件编写MD文档并生成带导航的html

COPYRIGHT © 2023 白泽图. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

登录
注册|忘记密码?