- 博客(35)
- 收藏
- 关注
原创 触摸屏幕的输入发射
在上述代码中,我们首先检测触摸输入是否存在。如果存在,我们获取第一个触摸点的位置,并将其转换为世界坐标。然后,我们计算子弹发射的方向,即从玩家位置指向触摸位置的向量,并将其标准化。最后,我们在固定方向上发射子弹,使用Instantiate函数实例化子弹预制体,并将速度设置为方向乘以一个固定值。可以使用Unity的Input类来处理触摸屏幕的输入,并根据触摸的位置来确定子弹发射的方向。
2023-09-15 16:11:11
116
原创 Unity性能优化
对象池背后的理念其实是非常简单的。池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象。LOD 技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。对象池通常用于在那些需要经常创建又销毁的对象比如我们场景中的小怪,经常需要创建和销毁,我们就可以在小怪销毁的时候,不真正的销毁而是,而是把它放入对象池中等到下一次我们需要创建小怪的时候,再从对象池中取出来。
2023-09-12 08:47:29
111
原创 U3d面试题(5)
正确排列出下面Unity脚本自带的函数执行顺序Start,Awake,Update,OnUpdate,OnEnable,FixedUpdate,OnGUI,LateUpdate、OnDisable、OnDestory。ScriptObject类型经常使用于存储一些Unity本身不可以打包的一些object,比如字符串,一些类对象,用这个类型的子类型可以用BuildPipeline打包成assetbundle包共后续使用,非常方便。iTween 是一个动画库,作者创建它的目的就是最小的投入实现最大的产出。
2023-09-12 08:45:56
130
原创 Unity30题面试题(4)
StartCoroutine 为什么叫协同程序呢,所谓协同,就是当你在 StartCoroutine 的函数体里处理一段代码时,利用 yield 语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。官网上例子是摄像机的跟随,都是在所有 update 操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。解决思路就是将世界坐标转换成屏幕坐标,然后计算物体与鼠标之间移动量,循环鼠标被按下操作,得到鼠标的当前位置,加上计算好的移动量,将新的坐标赋值给物理就行了。
2023-09-11 21:09:15
41
原创 U3D面试题(3)
Update是在每次渲染新的一帧的时候才会调用,FixedUpdate,是在固定的时间间隔执行,不受游戏帧率(fps)的影响 ,FixedUpdate的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到Fixed timestep。UIAnchor 的功能是把对象锚定在屏幕的边缘 (左上, 左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸。(3)游戏对象使用相同模型和材质时,只有相同缩放(即xyz等比缩放,浮点尾数可以有细微差)的会被合并。
2023-09-11 21:06:32
95
原创 Unity30题面试题(2)
Skinned Mesh 中文一般称作骨骼蒙皮动画.这种动画中包含骨骼( Bone )和蒙皮 (Skinned Mesh) 两个部分, Bone 的层次结构和关节动画类似, Mesh 则和关节动画不同:关节动画中是使用多个分散的 Mesh, 而 Skinned Mesh 中 Mesh 是一个整体,也就是说只有一个 Mesh, 实际上如果没有骨骼让 Mesh 运动变形, Mesh 就和静态模型一样了。当需要支持亚洲语言或者较大的字体的时候,若使用正常纹理,则字体的纹理将非常大。Render 的作用?
2023-09-11 21:05:10
73
原创 C#30题面试题(1)
如果是处理字符串的话,用 string 中的方法每次都需要创建一个新的字符串对象并且分配新的内存地址,而 stringBuilder 是在原来的内存里对字符串进行修改,所以在字符串处理。接口(interface)是约束类应该具备的功能集合,约束了类应该具备的功能,使类从千变万化的具体逻辑中解脱出来,便于类的管理和扩展,同时又合理解决了类的单继承问题。以及具体怎么处理这种情况?通过以上核心类可在运行时动态获取程序集中的类,并执行类构造产生类对象,动态获取对象的字段或属性值,更可以动态执行类方法和实例方法等。
2023-09-11 21:03:06
158
原创 简单对象池
void freeObjMemory(void* q)//释放一个对象并将这个对象还给内存池。//通过ObjectPoolBase对象的函数从对象池中获取对象以及将对象还给池子。//在内存中构建四个对象,并把这四个对象初始化好,用的时候直接从对象池中拿。_Ty* allocObjMemory()//从线程池获取一个对象。void ReFillPool() //填充对象池。void InitPool() //初始化对象池。
2023-09-11 21:01:14
27
原创 个人求职简历了解
答:把起点放入开放列表,然后重复以下过程:遍历开放列表,查找F值最小的节点,把它作为当前要处理的节点,移到封闭列表,对当前方格相邻的每一个方格判断,如果它是不可达到的或者它在封闭列表中,忽略它,否则,如果它不在开放列表中,把它加入开放列表,并把当前方格设置为它的父节点,记录该方格的F,G和H值。从终点开始沿父节点遍历,并保存整个遍历到的节点坐标,遍历所得的节点就是最后得到的路径。Cocos没有3D方面的积累,虽然支持3D的东西,但只是简单的支持加载,显示,没有好的编辑器,适合开发手机端游戏,开发小型游戏,
2023-09-11 20:57:30
74
1
原创 动力学模拟
动力学是研究物体运动和受力关系的学科。处理碰撞和约束:根据物理引擎提供的碰撞检测和约束处理功能,处理物体之间的碰撞和约束关系。物理引擎提供了物体的运动、碰撞检测、力的作用、约束等功能,简化了物理模拟的实现过程。更新物理世界:在每一帧中,更新物理世界的状态,计算物体的运动、受力和碰撞等效果。选择合适的物理引擎:根据需求和平台选择适合的物理引擎,了解其特性和使用方式。渲染和展示:将物理模拟的结果应用于图形渲染,展示物体的运动和碰撞效果。物理模拟可以应用于计算机图形学中的动画效果、游戏中的物理效果等。
2023-09-11 20:56:01
65
原创 unity模型导入
通过以上方式,可以在Unity中实现模型导入、光照、材质、烘焙、Shader和粒子特效开发以及可视化交互。导入后,可以在场景中创建一个空的GameObject,并将导入的模型文件拖拽到该GameObject上,即可将模型显示在场景中。粒子特效可以通过使用Unity的粒子系统来创建,可以调整粒子的形状、大小、颜色、运动等属性,以实现各种特效效果。烘焙光照可以通过在Unity中进行光照烘焙操作,将光照信息预计算并存储在贴图中,然后应用到场景中的模型上。可以使用Unity内置的材质,也可以自定义材质。
2023-09-11 20:55:21
572
原创 单例模式2
懒汉式适用于需要延迟创建实例的情况,而饿汉式适用于实例创建较为简单且资源消耗较小的情况。在饿汉式中,实例的创建是在类加载时进行的,因此可以保证实例的唯一性。这种方式简单直接,但可能会浪费一些资源,因为实例在类加载时就被创建,即使没有被使用。在懒汉式中,实例的创建是延迟进行的,只有在需要使用实例时才会创建。在获取实例的方法中,先判断实例是否已经被创建,如果没有则创建实例并返回。在静态方法或属性中,使用一个私有的静态变量来保存类的唯一实例。在饿汉式中,实例在类加载时就会被创建。
2023-09-11 20:54:48
26
原创 Unity3D引擎进行数据可视化大屏模块的开发
使用Unity3D引擎进行数据可视化大屏模块的开发,可以充分利用其强大的图形渲染和交互功能,提供丰富的可视化效果和用户体验。数据解析:根据数据的格式和结构,编写解析代码将数据转换为Unity可用的数据结构,如数组、列表、字典等。数据预处理:根据数据的特点和需求,进行数据清洗、筛选、聚合等预处理操作,以便后续的可视化展示。数据量控制:对于大量的数据,根据需求进行数据的分页、懒加载等处理,减少一次性加载和渲染的压力。实时展示:对于实时数据的展示,使用合适的动画和过渡效果,使数据的变化更加流畅和可视化。
2023-09-11 20:54:17
2160
原创 pun2插件和Shader
在进行Shader编程时,需要了解图形渲染管线的工作原理和各个阶段的功能,熟悉所使用的Shader语言和图形API的特性和限制。Shader是一段运行在图形处理器(GPU)上的程序,用于控制图形渲染管线的各个阶段,包括顶点处理、几何处理、光栅化和像素处理等。几何着色器(Geometry Shader):可选的阶段,用于处理几何图元,如点、线、三角形等,可以生成新的几何图元或对几何图元进行变换和计算等操作。PhotonView组件用于标识需要同步的对象,并管理对象的同步状态。导入插件到Unity项目中。
2023-09-11 20:53:45
154
原创 游戏开发流程
同时,良好的编程习惯也有助于团队协作和代码的可读性,提高开发效率和代码的可扩展性。Unity游戏开发师需要具备良好的编程能力、熟悉游戏开发流程和常用工具,同时具备创意思维和团队合作能力,以及对游戏行业的热情和了解。游戏优化:优化游戏的性能,包括减少内存占用、提高帧率、减少加载时间等,以提供更好的游戏体验。游戏测试和调试:进行游戏的测试和调试工作,修复bug、优化性能,确保游戏的稳定性和流畅性。特效和动画制作:创建游戏中的特效和动画,提升游戏的视觉效果和体验。
2023-09-11 20:52:01
59
原创 网络协议(浅)
Socket是一种用于网络通信的编程接口,它提供了一组函数和方法,用于创建、连接、发送和接收数据等操作。TCP是一种可靠的、面向连接的协议,它提供了数据传输的可靠性和顺序性。UDP是一种不可靠的、面向无连接的协议,它提供了数据传输的高效性和实时性。对于UDP通信,数据的发送和接收是不可靠的、无序的。在编程中,根据所使用的编程语言和库,调用相应的函数或方法来创建Socket对象、建立连接、发送和接收数据。在使用消息队列时,需要了解消息队列系统的特性和配置,以便正确地创建队列、发送和接收消息。
2023-09-11 20:50:23
23
原创 RPG使用技术
因为:1)配置文件的数据在游戏发布之前就定好了规则2)配置文件的数据在游戏运行时只会读出来使用,不会修改数据的内容3)传统的配置文件一般会通过xml、json、excel等方式来配置游戏数据,相对来说都是在 Unity 外部通过其它格式的文件对数据进行配置。- NGUI使用基于像素的布局方式,可以更精确地控制UI元素的位置和大小。数据复用 (多个对象共用一套数据):对于只用不变的数据,通过使用 ScriptableObject 可以有效避免内存的浪费,因为它将共用的数据单独抽离出来,供相同的一类对象使用。
2023-06-05 14:47:37
318
原创 使用JSON存储账号来实现登录注册
{“Account”:“1”,“Password”:“1”},{“Account”:“456”,“Password”:“456”}],文件里可以创建多个对象。{“key”:“value”}大括号里表示这是一个JSON对象,通过键和值来存储对象,key和value键必须用双引号来包裹。JSON格式一个标点符号都不能错,可以去这个网站来校检在线JSON校验格式化工具(Be JSON)创建的json文件里必须要初始化,否则会报空。1、JSON的{}大括号里只有一个对象。2、JSON文件里可以有多个对象。
2023-05-20 14:03:24
694
1
原创 文件存档
Serilization(序列化),可以用来将对象转化为字节流Deserlallzation(反序列化),可以用来将字节流转化为对象常见的数据序列化方法:二进制方法,XML方法,JSON方法二进制方法(Binary Formatter)序列化:新建或打开一个二进制文件,通过二进制格式器将对象写入该二进制文件反序列化:打开反序列化的二进制文件,通过二进制格式器将文件解析成对象XML: 扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型。
2023-05-12 20:00:00
40
原创 JSON
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。对象(字典):{”键1“:“值1” ,”键2“:“值2”}数组(列表):[值1,值2]
2023-05-10 16:09:30
41
1
原创 单例模式
在程序中多次使用同一个对象且作用相同时,为了防止频繁的创建对象导致内存飙升。单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。为了防止多线程环境下,因为指令重排序导致变量报NPE,需要在单例对象上添加volatile关键字防止指令重排。使用饿汉式写法,因为简单不易出错,且没有任何并发安全和性能问题。,那么使用懒汉式写法,可以在特定时候才创建该对象;
2023-05-09 23:51:34
63
1
原创 浅谈A星算法
在这张图中,中间深绿色的方格是你的起始方格,你首先会注意到我们把这一块搜索区域分成了一个一个的方格,如此这般,使搜索。数组中的每一个元素表示对应的一个方格,该方格的状态被标记为。当我们把搜索区域简化成一些很容易操作的节点后,下一步就要构造一个搜索来寻。中包含的方格可能会是你要途经的方格,也可能不是。相邻的所有可达的或者可通过的方格,不用管墙啊,水啊,或者其他什。当我们要回溯路径的时候,父方格是一个很重要的元素。点,而一堵墙把这两个点隔开了,如下图所示,绿色。的指针指向它们的父方格,即起始方格。
2023-05-09 23:29:07
161
1
原创 Unity如何制作背包
IInitializePotentialDragHandler:初始化,鼠标最对应地方摁下出发(鼠标Down)每次点击触发一次。以上三个就是制作背包UI的关键组件,主要就是通过这三个组件来对背包的UI布局。IBeginDragHandler:鼠标移动出发,第一下移动触发一次。IEndDragHandler:结束(鼠标Up)鼠标点击松开触发一次。IDragHandler:一直触发。
2023-05-08 19:59:04
325
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人