![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
Unity
小鸟霸哥
分享是一种美德
展开
-
车辆动力学及在Unity、UE4中的实现
受力分析直线行驶时的车轮受力如下:水平方向上,所受合力为:F=Ft+Fw+FfF=F_t+F_w+F_fF=Ft+Fw+Ff其中,FtF_tFt为牵引力,FwF_wFw为空气阻力,FfF_fFf为滚动阻力,下面我们将逐个介绍。驱动力先来说扭矩,扭矩是使物体发生旋转的一个特殊力矩,等于力和力臂的乘积,单位为N∙mN∙mN∙m:设驱动轴的扭矩为TtT_tTt,车轮半径为rrr,那么牵引力:Ft=Tt⁄rF_t=T_t⁄rFt=Tt⁄r如何求得驱动轴扭矩TtT_tTt呢?原创 2021-07-30 09:12:21 · 4264 阅读 · 8 评论 -
Unity 文本转贴图
导入字体导入ttf字体,修改Character为Custom set,并填入Custom Chars:可以看到,Unity为我们生成了对应的材质和贴图:从上图可以看出:1、Unity中Texture2D的坐标原点为左下角,和OpenGL相同,V坐标与DX相反。2、某些字符被上下翻转,某些字符被顺时针旋转了90度这两点需要特别注意。原理分析本文中使用的方法是创建一个Texture,然后利用Texture2D的public Color[] GetPixels(int x, int y,原创 2021-05-12 18:20:49 · 1661 阅读 · 4 评论 -
Unity ECS 进阶——在System中创建/销毁实体
EntityCommandBufferSystem能使我们在System中创建/销毁Entity。利用EntityCommandBufferSystem创建Entity其实是利用EntityCommandBufferSystem将命令队列压入主线程执行。1、首先设计Component:using Unity.Entities;public struct SpawnData : IComponentData{ public int Count; public Entity Tem原创 2021-04-19 16:09:31 · 1152 阅读 · 1 评论 -
Unity ECS 进阶——使用Chunk批量操作实体
什么是Chunk?Chunk:拥有相同Component的Entity的集合Archetype:Chunk容量有限,一系列同样大小的Chunk组成Archetype因为拥有相同Component的Entity都存储在Chunk中,所以ECS规定:创建/销毁实体、添加/删除组件,都不能在在Job中处理。否则其他Job不知道,会引起错误。第一个例子中的System,是在主线程中使用ForEach逐个Entity更新数据;而使用Chunk可以结合Job批量处理,速度更快:using Unity.Enti原创 2021-04-19 16:06:06 · 741 阅读 · 0 评论 -
Unity ECS 4——System篇
继承关系ComponentSystemBase└SystemBase└JobComponentSystem:在子线程中运行,仅当筛选出的Entity数量大于0时才会被调用生命周期按照组织架构来划分Group└System生命周期如下:在System类上添加Attribute,可以修改其所在的组:...原创 2021-04-19 16:02:09 · 287 阅读 · 0 评论 -
Unity ECS 3——Component篇
Component类型IComponentData└LocalToWorld└Translation└Rotation└RenderBoundsISharedComponentData└RenderMesh原创 2021-04-19 15:59:08 · 194 阅读 · 0 评论 -
Unity ECS 2——Entity篇
Entity生成1 通过CES系统创建生成Entity需要经过以下步骤:1、获取EntityManager,EntityManager可以创建/销毁Entity;2、创建EntityArchetype,相当于设计一个Entity类,用户可以定义Entity含有哪些Component;3、创建Entity对象;4、设置Component中的数据。using Unity.Entities;using Unity.Mathematics;using Unity.Rendering;using原创 2021-04-19 15:56:45 · 1766 阅读 · 1 评论 -
Unity ECS 1——简介
概念ECS即Entity Component System,实体组件系统。其中:Entity:用于标识那些数据属于一个实体;Component:存储数据(仅含数据,不含方法);System:管理组件数据的更新(不同于传统的通过对象修改数据,这里通过System统一直接修改数据)Unity版本:2019.3.3f1CES依赖包:“com.unity.collections”: “0.8.0-preview.5”,“com.unity.entities”: “0.10.0-preview.6”,原创 2021-04-19 15:49:55 · 309 阅读 · 0 评论 -
Unity Job System 4——作业之间的依赖
使用Handle处理作业之间的依赖:using Unity.Collections;using Unity.Jobs;using UnityEngine;public struct MyJob : IJob{ public float a; public float b; public NativeArray<float> result; public void Execute() { result[0] = a + b;原创 2021-04-19 15:44:29 · 234 阅读 · 0 评论 -
Unity Job System 3——特殊的Transform
对于处理Transform的Job,要继承IJobParallelForTransform:using Unity.Collections;using Unity.Entities;using Unity.Jobs;using UnityEngine;using UnityEngine.Jobs;// 继承IJobParallelForTransformstruct TransformJob : IJobParallelForTransform{ public NativeArra原创 2021-04-19 15:42:54 · 676 阅读 · 0 评论 -
Unity Job System 2——并行处理数据
并行处理数据的Job需要继承IJobParallelFor接口,Execute方法也有所变化:using Unity.Collections;using Unity.Jobs;using UnityEngine;struct MyParallelJob : IJobParallelFor{ [ReadOnly] public NativeArray<float> a;// 如果不需要写入,建议加[ReadOnly]提升性能 [ReadOnly] public Nati原创 2021-04-19 15:39:03 · 627 阅读 · 0 评论 -
Unity Job System 1——简单示例
作业系统和多线程有些类似,多线程是创建Thread对象并执行Start方法,而作业系统是先实现IJob接口并重写Execute,然后调用Schedule方法将作业放入作业队列。简单示例如下:using Unity.Collections;using Unity.Jobs;using UnityEngine;// 实现IJob接口public struct MyJob : IJob{ public float a; public float b; // 为保证线程安全原创 2021-04-19 15:35:34 · 814 阅读 · 0 评论