- 博客(56)
- 资源 (4)
- 收藏
- 关注
原创 ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)
总结来说,这行代码的作用是设置一个变换矩阵,使其沿着y轴的缩放因子随着时间周期性变化,而沿着x和z轴的缩放因子保持不变。: 这是一个表示变换的组件或结构体,通常用于存储实体的变换信息。函数会产生一个在-1到1之间的周期性变化值,因此沿着y轴的缩放会随着时间周期性变化。方法用于创建一个缩放矩阵,参数分别是沿着x、y、z轴的缩放因子。: 这是沿着x轴的缩放因子,表示不进行缩放。: 这是沿着z轴的缩放因子,表示不进行缩放。的一个属性,用于访问或设置变换矩阵的值。: 这是沿着y轴的缩放因子,使用。
2024-07-13 20:49:39
310
原创 Camera.main.ScreenToWorldPoint(Input.mousePosition) 和 ray.GetPoint(distance) 的区别
这个转换是基于相机的近平面和远平面之间的线性插值,返回的是一个三维世界坐标点。返回的是一个点,这个点是鼠标位置在相机近平面和远平面之间的插值点。的值通常是不同的,除非你特意设置了一个平面使得射线与平面的交点正好是。通常不会相同,除非你特意设置了一个平面使得射线与平面的交点正好是。是通过射线(从相机到屏幕点的射线)和某个平面(在这个例子中是。这个点是射线在给定距离上的点。// 获取射线与平面相交的点。// 创建一条从相机到屏幕点的射线。// 打印两个点的坐标。返回的是射线与平面相交的点。的结果通常是不同的。
2024-07-13 20:48:27
331
原创 在unity中的球形插值方法中第三个参数t是什么
在Unity中,球形插值(Spherical Linear Interpolation,简称Slerp)是一种用于在两个向量之间进行平滑插值的方法。球形插值通常用于旋转或方向的插值,以确保插值结果在球面上平滑过渡。之间沿着球面进行插值,确保插值结果在球面上平滑过渡。这对于旋转或方向的插值非常有用,因为它避免了线性插值可能导致的“捷径”问题。以下是一个简单的示例,展示了如何在Unity中使用。// 将插值结果应用到某个对象的位置。在 0 和 1 之间时,结果是。是要进行插值的两个向量,是一个浮点数,范围在。
2024-07-13 20:47:35
367
原创 在unity的ECS框架中SystemAPI.Time.DeltaTime的值如何确定
属性计算的,该属性表示上一帧所花费的时间(以秒为单位)。这个值通常用于在Update方法中进行时间相关的计算,例如移动物体、更新动画等。属性计算的,它表示上一帧所花费的时间(以秒为单位),在ECS系统中用于进行时间相关的计。在Unity的ECS(Entity Component System)框架中,以下是一个简单的示例,展示了如何在ECS系统中使用。,可以确保物体的移动速度在不同帧率下保持一致。来确定的,但在ECS框架中,它被封装在。是一个组件,包含物体的移动速度。的值是通过Unity的。
2024-07-13 20:47:02
360
原创 UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别
在这个示例中,`unitMoverArray` 包含了所有匹配实体的 `UnitMover` 组件数据,而 `entityArray` 包含了所有匹配的实体。- **返回类型**: 返回一个包含特定组件数据的数组,数组类型为 `T[]`,其中 `T` 是组件数据类型。- **返回类型**: 返回一个包含实体的数组,数组类型为 `Entity[]`。- **注意**: 这个方法返回的是组件数据数组,而不是实体数组。- **注意**: 这个方法返回的是实体数组,而不是组件数据数组。// 使用组件数据数组。
2024-07-13 20:46:05
600
原创 Unity简单实例之中使用命令模式进行回放的操作
代码1:定义命令的接口或者使用抽象类也未尝不可。public interface ICommand{ void Execute(); void Undue();} 代码2:实现一个点击的命令using UnityEngine;class ClickCommand : ICommand{ private GameObject _cube; private Color _color; private Color _previousColor;
2020-12-03 19:55:56
605
原创 unity中四元数的简单示例
using UnityEngine;public class Quaternioner : MonoBehaviour{ // Start is called before the first frame update public float speed = 3f; public Transform target; void Start() { } // Update is called once per frame .
2020-11-30 22:39:44
205
原创 unity中隐藏基类的方法与字段
using UnityEngine;public class HideMemeber : MonoBehaviour{ // Start is called before the first frame update void Start() { Debug.Log("-------------------------------"); Humanoid human = new Humanoid(); Humanoid enem.
2020-11-30 21:53:55
681
原创 unity中继承的学习记得断点后运行理解下哈
using UnityEngine;public class Inheritance : MonoBehaviour{ // Start is called before the first frame update void Start() { Debug.Log("Creating the fruit"); Fruit myFruit = new Fruit(); Debug.Log("Creating the apple".
2020-11-30 21:28:43
125
原创 在UNITY中理解类的多态用简单例子来理解,记得断点调试运行下!
using UnityEngine;public class Polymorphism : MonoBehaviour{ // Start is called before the first frame update void Start() { // 请注意,这里的变量“myFruit”的类型是 //Fruit,但是被分配了对 Apple 的引用。这是 //由于多态而起作用的。由于 Apple 是 Fruit, .
2020-11-30 21:26:00
209
原创 Shader学习系列一从shaderforge和shadergraph比较入手
遇到的问题:1.在半兰伯特关照模型使用Append生成二维向量再导入texture中,在亮部形成黑色斑块时什么原因呢?后来发现需要在unity中将贴图修改为lightmap光照贴图即可。2.在半兰伯特中使用append节点的时候,要注意先后顺序。3.ps中创建三色过度的话使用渐变工具,点击左上角渐变里面的图标,在图标上选取每个渐变的值,然后确定是否插件等。4.使用shadergraph重新作出上面的效果要稍微麻烦一些。首先,没有直接取得关照的节点所以只好自己写一个取得主光源的颜色和方向,代码
2020-08-25 20:17:33
3372
原创 unity官方美女讲解的场景加载demo
分为两种方法,一种用碰撞器解决,一种用距离判断。地下城与迷宫等使用碰撞比较好,而外面的开放世界可以使用距离判断using UnityEngine;using UnityEngine.SceneManagement;public class LoadPartOfScene : MonoBehaviour{ public enum CheckLoadPartOfMethod { UseDistance, UseTrigger }
2020-07-05 16:30:01
272
原创 unity中如何反序列化xml进行读取
using System.IO;using System.Xml.Serialization;using UnityEngine;public class SerializeDemo : MonoBehaviour{ void Start() { XmlReadSerlize(); } void XmlReadSerlize() { var testmlserial = XmlDeSe..
2020-07-02 19:49:30
225
原创 unity中如何序列化xml
新建2个脚本脚本2个代码如下:// 脚本1 TestSertialusing System.Collections.Generic;using System.Xml.Serialization;[System.Serializable]public class TestSertial{ [XmlAttribute("ID")] public int ID { get; set; } [XmlAttribute("Name")] public
2020-07-01 23:56:45
326
原创 Unity中如何替换资源商店的默认位置,为C盘腾出空间
注意:这里的74488是用户名,win10用户 如果不知道是什么就这样操作1.右键“开始”,选择“运行”。2.输入“cmd”,点击“确定”。3.完成上述操作后即可成功打开命令提示符。命令提示符中会显示你的用户名,例如:C:\Users\用户名>资源商店的替换操作步骤为:1.剪切这个地址的文件夹,注意是Asset Store-5.x 不是 Asset StoreC:\Users\74488\AppData\Roaming\Unity\Asset Store-5.x2.剪切
2020-06-22 11:04:05
2240
1
原创 unity中进行输入的模板代码
using System.Collections;using System.Collections.Generic;using UnityEngine;//这里的特性也可以使用ProjectSettings中Script Execution Order 进行调节和替代[DefaultExecutionOrder(-200)]public class InputManager : MonoBehaviour{ public float Horizontal { get; privat.
2020-06-16 21:19:35
453
原创 unity中如何超简单的制作一个渐变天空盒背景
首先来到著名的免费网站 :https://www.pixilart.com点击“start drawing” 进入绘画页面,然后点击“FIle”=》“New”=》修改像素宽为1高度为4然后点击“new drawing”,分别自下而上或者自上而下选在每个像素并且赋值不同颜色,要求颜色是渐变的,比如:白=》浅蓝=》蓝=》深蓝 这样也可以,颜色自己随便取。主要掌握好渐变就可以了。最后,点击download,下载后导入到unity中就可以了...
2020-06-13 10:58:36
2020
原创 unity判断距离在多次反复调用的情况的节约性能办法。
需要进一步优化性能的情况下最好进行修改!比如: 开始时这样判断距离的:Vector3.Distance(item.transform.position,hit.point)<=bombRange*bombRange)修改为: var dis = hit.point - item.transform.position; if (dis.sqrMagnitude <= bombRange * bombRange) { ...
2020-06-10 23:18:08
862
原创 unity官方培训学习之:对于操控性比较强的游戏,输入解决办法
很多游戏需要能处理好玩家输入的操作并且给予及时反馈,有延迟所带来的体验会很不好。最近看了官方培训课程里面是这样做的:1、单独创建一个INPUT的类,处理玩家的各项输入比如移动、跳跃等。2、在INPUT类前面加入 [DefaultExecutionOrder(-100)]确定脚步最先执行。...
2020-06-10 23:10:58
279
原创 UNITY解决摄像机无法同时渲染天空盒与场景的问题
unity双摄相机一个负责渲染天空盒一个负责渲染游戏场景。步骤:1、移除主摄像机的skybox2、设置副摄像机的skybox3、设置主摄像机为的clearflag为"depth only"4、预览游戏如果主副摄像机有渲染重叠的问题,可以将副摄像机调整到不影响的位置即可。...
2020-06-06 09:00:07
1914
原创 unity学习之动画状态切换后角色沉入地面里面
需要将角色动画类型更换为泛型,因为原格式是泛型的话,导入unity会造成错误。暂时的解决办法就是这样。
2020-05-26 20:51:03
3284
5
原创 unity官方内置网络unet的实例教程(八)
玩我们制作的这个小游戏的时候,是不是玩家出生甚至死亡都挤在一个地方挺别扭的啊?先来修改下这个问题吧:我们得利用这个叫NetworkStartPosition的组件,因为它内置有可用于执行处理产生位置的功能。先创建一个空物体,重命名为:Spawn Position 1,然后重置transform,选中它,在Inspector属性面板添加NetworkStartPosition组件,将它的位置Posi
2017-11-16 13:15:02
692
原创 unity官方内置网络unet的实例教程(八)
玩我们制作的这个小游戏的时候,是不是玩家出生甚至死亡都挤在一个地方挺别扭的啊?先来修改下这个问题吧:我们得利用这个叫NetworkStartPosition的组件,因为它内置有可用于执行处理产生位置的功能。先创建一个空物体,重命名为:Spawn Position 1,然后重置transform,选中它,在Inspector属性面板添加NetworkStartPosition组件,将
2017-11-11 15:49:08
1294
原创 unity官方内置网络unet的实例教程(七)
游戏制作到了这里,已经实现非常简单的打打杀杀了,不过大家控制的角色都是露面就开打,缺少了一点浪漫气息。接下来,制作些非游戏里面的怪物或者敌人吧,这样可以稍微增加些游戏的趣味性。当我们的客户端连接服务端的时候,生成了我们的角色,那些敌人应该也被服务端生成。首先,需要一个Enemy Spawner来生成敌人。回到Unity编辑器,在Hierarchy面板中新建一个空物体,重命名为:En
2017-11-10 09:33:23
2047
转载 Mangos源码分析(15):游戏对象的实现
狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。 在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、游戏对象(GameOb
2017-11-09 16:12:18
431
转载 Mangos源码分析(14):Mangos预编译头文件及模块划分随想
其中game工程生成的库文件game.lib居然有近四百兆之巨,mangosd和realmd在连接这个库的时候也要花上好长一段时间。当然,mangos现在的代码量也确实不少了,这也就要考虑到大的工程项目的源代码管理及模块工程划分,至少,像mangos现在这样,代码全部放入game目录中,并且就做为一个大的工程的方式,其弊端是已经显现了。另外还有功能模块划分的问题,需要找一个功能的实现时,不知道该到
2017-11-09 16:11:39
311
转载 Mangos源码分析(13):再谈登录服的实现
关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。 GateWay/WorldServer GateWay/WodlServer LoginServer LoginServer DNSServer WorldServerMgr | |
2017-11-09 16:08:59
313
转载 Mangos源码分析(12):服务器公共组件实现之事件与信号
有些类似于QT中的event与signal,我将一些动作请求消息定义为事件,而将状态改变消息定义为信号。比如在QT应用程序中,用户的一次鼠标点击会产生一个鼠标点击事件加入到事件队列中,当处理此事件时可能会导致某个按钮控件产生一个clicked()信号。对应到我们的服务器上的一个例子,玩家登录时会发给服务器一个请求登录的数据包,服务器可将其当作一个用户登录事件,该事件处理完后可能会产生一个用
2017-11-09 16:08:10
217
转载 Mangos源码分析(11):服务器公共组件实现之状态机
有关State模式的设计意图及实现就不从设计模式中摘抄了,我们只来看看游戏服务器编程中如何使用State设计模式。 首先还是从mangos的代码开始看起,我们注意到登录服在处理客户端发来的消息时用到了这样一个结构体: struct AuthHandler { eAuthCmd cmd; uint32 status; bool (AuthSoc
2017-11-09 16:07:33
255
转载 Mangos源码分析(10):服务器公共组件实现之发包的方式
前面一直都在说接收数据时的处理方法,我们应该用专门的IO线程,接收到完整的消息包后加入到主线程的消息队列,但是主线程如何发送数据还没有探讨过。 一般来说最直接的方法就是逻辑线程什么时候想发数据了就直接调用相关的socket API发送,这要求服务器的玩家对象中保存其连接的socket句柄。但是直接send调用有时候有会存在一些问题,比如遇到系统的发送缓冲区满而阻塞住的情况,或者只发送了一
2017-11-09 16:06:29
210
转载 Mangos源码分析(9):服务器公共组件实现之环形缓冲区
消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mango
2017-11-09 16:03:25
221
转载 Mangos源码分析(8):服务器公共组件实现之消息队列
既然说到了消息队列,那我们继续来稍微多聊一点吧。 我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个message返回,同时在getMessage和putMessage之前都要求先获取锁资源。 实现虽然简单,但功能是绝对满足需求的
2017-11-09 16:01:57
239
转载 Mangos源码分析(7):服务器公共组件实现之游戏主循环
当阅读一项工程的源码时,我们大概会选择从main函数开始,而当开始一项新的工程时,第一个写下的函数大多也是main。那我们就先来看看,游戏服务器代码实现中,main函数都做了些什么。 由于我在读技术文章时最不喜看到的就是大段大段的代码,特别是那些直接Ctrl+C再Ctrl+V后未做任何修改的代码,用句时髦的话说,一点技术含量都没有!所以在我们今后所要讨论的内容中,尽量会避免出现直接的代码
2017-11-09 15:59:17
394
转载 Mangos源码分析(6):登录服的设计之功能需求
正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。 想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服务器,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。 这个方法存在的安全隐患实在太大,明文的
2017-11-09 15:58:40
302
PDG-PDFORIMG.zip
2019-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人