• 博客(316)
  • 资源 (7)
  • 收藏
  • 关注

原创 Unity3D 程序员常用的核心类及方法详解

作为Unity3D程序员,掌握常用的核心类及方法是非常重要的。本文将详细介绍Unity3D中程序员常用的核心类及方法,并给出代码实现。以上是Unity3D程序员常用的核心类及方法的详细解释和代码实现。GameObject类用于表示游戏对象,是Unity3D中最基本的类之一。Collider类用于表示游戏对象的碰撞器,用于检测游戏对象之间的碰撞。通过Collider类,程序员可以实现游戏的碰撞检测和响应。通过Rigidbody类,程序员可以实现游戏对象的物理模拟。Rigidbody类。

2023-10-18 10:53:50 156

原创 Unity3D Shader新手入门教程:3D溶解与腐蚀特效详解

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!技术详解Shader是一种编程语言,用于控制物体表面的渲染效果。Unity3D中的Shader主要基于HLSL语言进行开发。Shader可以通过改变物体表面的颜色、光照、透明度等来实现各种特效。在实现3D溶解与腐蚀特效时,需要使用一些特定的Shader函数和参数。首先,我们需要定义一个Shader,可以通过在Unity中创建一个新的Shader文件来实现。

2023-10-18 10:44:36 672

原创 Unity3D 如何自己编写一个URP渲染管线的Shader详解

Unity3D是一款强大的游戏开发引擎,它提供了许多渲染管线供开发者选择使用。其中一种渲染管线是Universal Render Pipeline (URP),它是一种轻量级的渲染管线,适用于移动设备和低端硬件。在本文中,我们将详细介绍如何自己编写一个URP渲染管线的Shader,并给出技术详解以及代码实现。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!首先,我们需要创建一个新的URP渲染管线。

2023-10-18 10:35:58 352

原创 Unity DOTS Component概述

当我们使用struct 来定义ComponentData的时候,意味着我们使用的是一个非托管(垃圾回收)的对象,里面的数据成员也是需要用非托管的,如果你要用托管的数据成员与对象,你可以把struct 改成class来定义。Component的内存基于Chunk(16kib)来分配特定ArchType的大小(不同组件组合后的内存大小)的内存,Component属于这个内存块中的某一个部分。Unmanaged Component: 使用最多的非托管的组件类型,但是里面的数据成员必须是非托管的,所以类型有限。

2023-10-17 18:01:06 242

原创 Unity手机游戏发热发烫优化指南与技巧

第二部分:优化GPU性能。第三部分:优化CPU性能。第一部分:了解发热原因。第四部分:优化内存使用。第五部分:其他优化技巧。

2023-10-17 15:42:04 205 1

原创 Unity教程 ECS 内存分配器原理详解

在UnityECS中,实体和组件数据的访问是通过Chunk和Archetype来实现的。Archetype是一种用于描述实体和组件数据布局的数据结构,它包含了一组组件类型和对应的内存偏移量。在UnityECS中,内存分配器会根据实体和组件数据的大小和数量来动态分配和管理Chunk。当需要分配新的Chunk时,内存分配器会从系统内存中申请一块连续的内存空间,并将其划分为多个大小相等的Chunk。然而,由于实体和组件数据的规模通常非常庞大,使用堆内存进行分配和管理会导致内存碎片化和性能下降的问题。

2023-10-17 15:40:03 104

原创 Unity DOTS World Entity ArchType Component EntityManager System概述

每个World,包含了自己的所有的Systems, 并负责System的迭代计算。分配的时候,首先会分配16K大小的Trunk, 然后每种ArchType会对应一个size,一个Trunk只会分配同一种类型的ArchType,这样可以更高效的做好内存释放与分配。运行的时候,Unity会创建一个默认的世界出来,并把每个system加入到这个默认的世界,如果你想要添加一个system,在运行的时候就加入到默认的World里面,你只要实现IcustomBootstarp接口。

2023-10-17 15:12:46 152

原创 Unity ECS最新DOTS环境搭建教程

b: entities.graphics包(必装): 包名为com.unity.entities.graphics,在package管理器中输入包名完成安装,它负责Entity的渲染,将Entity渲染相关数据提交给基于SRP的渲染管线。安装好entities包后,在Pacakges的entities的文件夹下可以看到有一个Document~的文件夹,它是当前DOTS版本的文档,我们可以从里面拷贝出来,作为离线文档来看。其它的一些基于ECS的库根据自己的实际需要安装好即可。1 获取DOTS的在线文档。

2023-10-17 13:45:25 171

原创 Unity 实现一个FPS游戏的全过程

在上面的代码中,我们定义了一个名为“EnemyAI”的脚本,并定义了几个变量,包括玩家、移动速度、检测范围、攻击范围和攻击延迟。在Attack函数中,我们等待攻击延迟时间,然后减少玩家的健康值,并将isAttacking变量设置为false,以允许敌人再次攻击。在本文中,我们使用Unity实现了一个FPS游戏的全过程,从场景设计、角色控制、敌人AI到最终的打包发布。在本文中,我们将使用Unity实现一个FPS游戏的全过程,从场景设计、角色控制、敌人AI到最终的打包发布。最后,我们需要将游戏打包并发布。

2023-10-16 15:32:20 297

原创 Unity塔防游戏的制作与实现

我们可以使用Unity的2D Tilemap工具来创建地图,并使用Unity的Sprite Renderer组件将塔和怪物放置在地图上。然后,我们需要导入一些必要的素材,如地图、塔、怪物、子弹等。在塔防游戏中,玩家需要建造塔来防御怪物的进攻。玩家可以通过杀死怪物来获得金币,从而建造更多的塔。当怪物进入塔的攻击范围内时,塔会对怪物进行攻击。当玩家点击地图上的空地时,会弹出一个塔的列表供玩家选择。当玩家点击地图上的空地时,会弹出一个塔的列表供玩家选择。当怪物进入塔的攻击范围内时,塔会对怪物进行攻击。

2023-10-11 15:05:39 1449 2

原创 Unity基于C#事件委托机制

在Unity中,事件委托通常通过定义一个委托类型来实现,然后使用该委托类型来声明事件和处理函数。使用事件委托可以将事件的触发和处理分离,从而实现对象之间的解耦合。触发事件的对象不需要知道哪些对象将处理该事件,处理事件的对象也不需要知道哪些对象将触发该事件。使用事件委托,我们可以将游戏状态的变化与相应的处理函数绑定在一起,从而实现对游戏状态变化的响应。当需要添加新的事件或处理函数时,只需要在相应的地方进行修改,而不需要修改其他相关的代码。事件委托支持多播委托,即一个事件可以有多个处理函数。

2023-10-10 16:14:05 348

原创 如何打造一个网络框架模块对接服务器

在开始打造网络框架模块之前,首先需要了解网络框架的基本原理。网络框架是一个软件模块,用于处理网络通信的各种细节,包括数据传输、协议解析、错误处理等。在开始打造网络框架模块之前,需要选择一个合适的网络框架作为基础。在测试网络框架模块之后,可以根据测试结果进行优化。在设计完接口之后,可以开始实现网络框架模块了。在打造网络框架模块之前,需要设计模块的接口。实现网络框架模块时,需要注意代码的可读性、可维护性和性能优化。通过测试,可以发现和修复网络框架模块的问题,并确保其正常工作。三、设计网络框架模块的接口。

2023-10-09 14:55:27 663

原创 Unity3D 如何在ECS架构下,用Unity引擎进行游戏开发详解

Unity3D是一款强大的游戏引擎,它提供了丰富的功能和工具,可以帮助开发者快速构建高质量的游戏。而Entity Component System(ECS)是Unity3D中一种新的架构模式,它可以提高游戏的性能和可扩展性。本文将详细介绍在ECS架构下使用Unity引擎进行游戏开发的技术细节和代码实现。对惹,这里有一游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀二、Unity中的ECSUnity中的ECS是通过Unity.Entities命名空间下的API实现的。

2023-08-29 14:32:58 1080

原创 主程技术分享: 游戏项目帧同步,状态同步如何选

角色对象A发了一个行走的操作给服务器,服务器先判断这个操作的合法性,如果合法,服务器就把角色对象A的状态(位置,旋转,状态等关键指标)+玩家的行走操作(寻路走到目的地dst)一起发送给能看见A玩家的人(能看见A的客户端+包含A自己),关键来了,收到这个状态变化后,每个客户端先重置一下角色数据的状态(位置,旋转,缩放)与服务器同步,在大家都同步到服务器的状态的基础上再做寻路移动操作。客户端的帧率是60左右给玩家的感觉是比较流畅的,服务器以多少的帧率来驱动客户端玩家感觉会是流畅的呢?总结一下,客户端根据。

2023-08-22 15:57:37 655

原创 网络游戏同步:状态同步核心原理剖析

状态同步的核心就是:处理每种状态和事件之前,先同步,然后再服务端计算服务端的,客户端做客户端的。只要是网络游戏,涉及到服务器与客户端同步的游戏,都可以使用状态同步,举几个状态同步的例子,如《魔兽世界》,腾讯《吃鸡》,《自走棋》等大部分的多人在线的网络游戏都是用状态同步来做的,换句话说网络游戏中除了少数人对战(5v5, 10v10)的Moba类,FPS类等会用帧同步以外,其它的都是状态同步。由上面得到的结论就是,行走过程中位置的变化,没有必要同步到客户端,服务端跑服务端的,客户端跑客户端的,只是。

2023-08-18 14:49:03 343

原创 unity打造路径编辑与导航系统

Unity是一款非常流行的游戏引擎,它提供了丰富的工具和API,方便开发者快速创建游戏。其中,路径编辑与导航系统是游戏开发中非常重要的一部分,可以帮助玩家更好地探索游戏世界,提升游戏体验。在这个示例代码中,我们使用Seeker组件来进行寻路,然后在OnPathComplete()回调中获取到路径,使用FixedUpdate()方法来更新角色的位置。在这个示例代码中,我们通过鼠标点击来设置角色的目标位置,然后使用NavMeshAgent的SetDestination()方法控制角色移动到目标位置。

2023-08-16 17:56:13 349

原创 Unity 打造游戏攻击技能架构与设计

在这个脚本中,我们定义了技能 CD 和上次使用技能的时间,并且实现了两个方法:IsReady() 和 UseSkill()。UseSkill() 方法用来使用技能,如果技能已经冷却完成,则更新上次使用技能的时间。技能 CD 是指技能使用后需要等待的时间,这个时间称为技能的冷却时间。(1)技能 CD 的长度:技能 CD 的长度直接决定了技能的使用频率,太长会影响游戏体验,太短会影响游戏平衡。(2)技能 CD 的重置:有些技能会在一定条件下重置 CD,例如杀死敌方英雄、使用其他技能等。三、技能 CD 的管理。

2023-08-09 17:08:40 1472

原创 Unity面试题:热更新篇

Unity热更新是一种游戏开发技术,可以实现游戏在线更新和扩展。其原理是将游戏的资源和代码分离,将代码部分放置在服务器端,游戏启动时通过网络下载更新的代码并动态加载,以达到实现热更新的目的。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。实现方式包括:总之,Unity热更新可以通过将游戏的资源和代码分离,采用不同的实现方式,实现游戏的在线更新和扩展,提高游戏的灵活性和可扩展性。

2023-08-04 14:36:11 439

原创 unity行为决策树实战详解

行为决策树是一种用于游戏AI的决策模型,它将游戏AI的行为分解为一系列的决策节点,并通过节点之间的连接关系来描述游戏AI的行为逻辑。在行为决策树中,每个节点都代表一个行为或决策,例如移动、攻击、逃跑等,而节点之间的连接关系则代表了不同行为之间的优先级和逻辑关系。在代码中,我们可以在AI类中创建行为决策树对象,并在AI的Update方法中调用行为决策树的执行方法,从而实现游戏AI的行为控制。在行为决策树类中,我们可以定义行为节点和条件节点,并通过节点之间的连接关系来描述游戏AI的行为逻辑。

2023-08-02 15:01:45 959

原创 Unity教程 ECS 内存分配器原理详解

当需要访问实体和组件数据时,UnityECS会根据实体的Archetype来确定其所在的Chunk,并使用内存偏移量来定位和访问相应的组件数据。由于实体和组件数据存储在连续的内存块中,访问时可以直接通过内存偏移量进行计算,从而提高内存访问的效率。UnityECS内存分配器的主要作用是将实体和组件数据存储在连续的内存块中,以提高内存访问的效率。它采用了一种称为Chunk的数据结构来存储实体和组件数据,每个Chunk包含一定数量的实体和组件数据,以及一些元数据用于管理和访问这些数据。

2023-07-26 14:27:09 333

原创 Moba游戏帧同步的技术原理与重点难点

帧同步是通过在数据传输过程中插入同步字节或同步信号来保证数据的同步。帧同步技术在计算机网络中有广泛的应用,特别是在数据通信和传输领域。一、帧同步的技术原理。二、帧同步的重点难点。三、帧同步的应用领域。

2023-07-24 14:31:36 429

原创 Unity手机游戏发热发烫优化指南与技巧

第二部分:优化GPU性能。第三部分:优化CPU性能。第一部分:了解发热原因。第四部分:优化内存使用。第五部分:其他优化技巧。

2023-07-20 14:49:55 813

原创 Unity设计模式之工厂模式

在创建敌人对象时,可以使用工厂模式来根据不同的参数来创建不同类型的敌人。在创建武器对象时,可以使用工厂模式来根据不同的参数来创建不同类型的武器。例如,可以创建一个武器工厂类,根据不同的参数来创建不同类型的武器对象。在创建道具对象时,可以使用工厂模式来根据不同的参数来创建不同类型的道具。例如,可以创建一个道具工厂类,根据不同的参数来创建不同类型的道具对象。工厂模式是一种创建型设计模式,它提供了一种封装对象创建的方式,将对象的创建过程与使用过程分离,使得代码更加灵活、可扩展和可维护。四、工厂模式的应用场景。

2023-07-17 14:39:40 1425

原创 Unity基于C#事件委托机制

当某个事件发生时,事件委托会依次调用这些方法。在Unity中,事件委托通常通过定义一个委托类型来实现,然后使用该委托类型来声明事件和处理函数。触发事件的对象不需要知道哪些对象将处理该事件,处理事件的对象也不需要知道哪些对象将触发该事件。使用事件委托,我们可以将用户输入与相应的处理函数绑定在一起,从而实现对用户输入的响应。使用事件委托,我们可以将游戏状态的变化与相应的处理函数绑定在一起,从而实现对游戏状态变化的响应。当需要添加新的事件或处理函数时,只需要在相应的地方进行修改,而不需要修改其他相关的代码。

2023-07-12 14:42:34 638

原创 Unity RVO动态避障实战

在Update方法中,物体的速度被设置为(1, 0, 0),并通过模拟器更新物体的位置。在更新过程中,RVO算法会计算出物体的速度障碍,并根据速度障碍调整物体的速度,以避免与其他物体发生碰撞。可以使用Unity的渲染组件(如Mesh Renderer)来为物体添加外观,并使用物体的位置信息来设置渲染组件的位置。可以将RVO管理器脚本添加到一个空物体上,并将需要进行动态避障的物体添加到RVO管理器的物体列表中。在脚本中,设置物体的初始位置和速度,并将物体添加到RVO管理器中。步骤5:更新物体的位置和速度。

2023-07-10 14:50:07 1156

原创 Unity URP渲染管线与内置渲染管线的性能差别

URP还提供了一些新的功能,如可编程渲染管线(Scriptable Render Pipeline)和2D渲染管线,使开发者可以更灵活地控制渲染过程。虽然URP提供了一些新的功能,但它并不支持所有内置渲染管线的功能,如全局光照、实时反射等。其次,由于URP是相对较新的渲染管线,它的生态系统和文档相对较少。内置渲染管线是Unity较早版本中使用的默认渲染管线,它使用的是传统的图形渲染技术。然而,如果项目对于图形效果和功能要求较高,同时对于性能要求较低,那么内置渲染管线可能更适合。

2023-07-06 16:04:27 1407

原创 Unity 基于群体寻路的解决方案

NavMeshAgent是Unity中用于寻路的组件,它可以自动计算角色的移动路径,并控制角色的移动。然后,我们需要在场景中创建一个地面,用于角色的移动。除了设置目标位置,我们还可以设置角色的移动速度和转向速度。在场景中选择一个角色,然后点击"Add Component",选择"Navigation",然后点击"NavMeshAgent"。当我们运行游戏时,我们可以看到角色根据鼠标点击的位置智能地移动,避免碰撞和相互干扰。以上代码将在鼠标左键点击时获取鼠标点击的位置,并将其设置为角色的目标位置。

2023-07-05 17:15:33 696

原创 Unity的协程是怎么一回事

协程是一种特殊的函数,可以让我们在程序中实现异步操作,而不需要使用多线程或回调函数。在协程中,我们可以使用yield关键字来暂停协程的执行,并在需要的时候恢复执行。这是因为协程的执行过程中可能会暂停和恢复,而这些参数在暂停和恢复的过程中可能会发生变化。例如,我们可以使用协程来实现一个平滑移动的效果,每帧移动一小段距离,从而实现动画效果。例如,我们可以使用协程来实现一个倒计时的效果,或者在游戏中实现一系列的任务。c. 协程的执行顺序是不确定的。由于协程是由程序自身调度的,所以无法保证协程的执行顺序和次数。

2023-07-03 14:55:55 435

原创 Lua调用C#的底层原理

Lua是一种轻量级的脚本语言,被广泛应用于游戏开发、嵌入式系统和其他需要快速开发和灵活性的领域。而C#是一种面向对象的编程语言,是微软开发的.NET平台的一部分,主要用于Windows应用程序开发。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。Lua调用C#的底层原理是通过Lua的扩展机制来实现的。Lua提供了一套API,可以通过这些API将C#代码嵌入到Lua脚本中,并实现相互调用。

2023-06-28 15:53:55 985 1

原创 ILRuntime编码中如何注意性能问题

这样的代码会频繁地进行反射操作,如果我们需要频繁地获取类型的属性,将会产生很大的性能开销。例如,将int类型的变量转换为object类型的变量就是一次装箱操作,将object类型的变量转换为int类型的变量就是一次拆箱操作。委托操作会产生额外的内存开销和GC压力,所以我们需要尽可能地避免频繁的委托操作。装箱和拆箱操作是非常耗费性能的,所以我们需要尽可能地避免频繁的装箱和拆箱操作。装箱和拆箱操作会产生额外的内存开销和GC压力,所以我们需要尽可能地避免频繁的装箱和拆箱操作。

2023-06-26 16:05:30 303

原创 说说Burst Compiler 的架构原理

IL2CPP的基本原理是将C#代码编译为中间语言IL代码,然后将IL代码转换为C++代码,并且使用C++编译器将C++代码编译为本地代码。IL2CPP的优势在于它可以将C#代码转换为本地代码,并且可以使用C++编译器的优化技术来优化代码的性能。Burst Compiler是Unity的一种编译器,它可以将C#代码编译为高效的本地代码,从而提高Unity应用程序的性能。Burst Compiler的优势在于它可以自动将C#代码转换为本地代码,并且可以使用SIMD指令和多线程技术来优化代码的性能。

2023-06-21 14:44:12 833

原创 ILRuntime是如何与Unity互相调用的

在上面的代码中,使用Unity的WebRequest下载了“Assembly-CSharp.assetbundle”文件,并使用AssetBundle加载了“Assembly-CSharp.dll”文件,并将IL代码加载到ILRuntime的AppDomain中。在上面的代码中,使用Unity的反射机制获取了ILRuntime中的“Assembly-CSharp.TestClass”类型和“TestMethod”方法,并调用了它。ILRuntime的热更新是指在运行时替换IL代码,从而实现应用程序的更新。

2023-06-16 12:03:22 1280

原创 ILRuntime是如何实现热更新的

ILRuntime的基本原理是将C#代码编译成IL代码,然后在运行时通过IL解释器将其转换成机器码执行。这种方式与传统的AOT(Ahead of Time)编译方式不同,传统的AOT编译方式是在编译时将C#代码编译成机器码,然后在运行时直接执行机器码。当需要更新代码时,只需要将新代码编译成IL代码,然后替换原来的IL代码即可,不需要重新编译整个游戏。当需要更新代码时,编写新的C#代码,并将其编译成IL代码。将编译好的IL代码打包到游戏中,ILRuntime会在游戏启动时加载IL代码,并将其解释执行。

2023-06-15 15:27:12 1849

原创 ILRuntime技术方案与Mono的区别

由于Mono是基于解释执行的方式,因此它的性能相对较低。ILRuntime与Mono都是基于C#语言的游戏脚本解决方案,它们的基本原理都是将C#代码编译成中间语言IL(Intermediate Language),然后通过JIT实现即时编译,最终生成可执行代码。但是,它们的实现方式有所不同。由于这些游戏的规模较小,需要处理的数据和逻辑较少,因此ILRuntime的JIT方式可以大大提高游戏的性能。由于这些游戏的规模较大,需要处理大量的数据和复杂的逻辑,因此Mono的解释执行方式不会对其性能产生过大的影响。

2023-06-13 15:05:34 1178

原创 Unity如何设计一个战斗系统

在游戏中,战斗系统的基本原理是通过计算双方的属性和技能等信息,来模拟双方的战斗过程。游戏开发者需要在Unity中创建战斗场景,并将角色模型和技能效果等元素放置在场景中。在上述代码中,游戏开发者可以在BattleScene脚本中创建玩家角色和敌人角色,并将角色放置在场景中。游戏开发者需要在Unity中定义技能的属性和效果,并在代码中实现技能的释放和效果逻辑。例如,游戏开发者可以在UseSkill方法中检查技能是否可用、消耗技能资源、播放技能动画和处理技能效果等操作。

2023-06-09 10:59:12 1816

原创 Unity 如何基于addressable来做资源管理

Addressable系统可以解决这些问题,它可以实现资源的异步加载、动态加载、按需加载等功能,从而提高游戏的效率和用户体验。Addressable系统可以实现资源的异步加载,这意味着游戏中的资源可以在后台加载,不会影响游戏的运行。Addressable系统可以实现资源的动态加载,这意味着游戏中的资源可以在运行时加载,而不是在游戏启动时加载。Addressable系统可以实现资源的按需加载,这意味着游戏中只有需要的资源才会被加载,而不是所有的资源都被加载。这种方式可以减少内存占用,从而提高游戏的性能。

2023-06-07 16:22:44 1075

原创 Unity如何设计一个技能系统

技能触发器是用于触发技能的脚本。在技能触发器中,定义了技能对象、触发范围、触发延迟时间和上次触发时间等属性。在Start方法中,遍历技能列表,创建技能项,并设置技能项的属性。在设计技能系统时需要考虑游戏的类型和玩家的需求,选择适合的技能类型。在SkillItem脚本中,定义了技能名称文本、技能等级文本和技能图标等属性。在技能类中,定义了技能的名称、类型、消耗、冷却时间、等级、图标和效果等属性。在技能项中,定义了技能名称文本、技能等级文本和技能图标等属性。在Unity中创建技能类,用于定义技能的属性和效果。

2023-06-05 14:53:34 3030

原创 Unity面试题:热更新篇(一)

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。Unity热更新是一种游戏开发技术,可以实现游戏在线更新和扩展。其原理是将游戏的资源和代码分离,将代码部分放置在服务器端,游戏启动时通过网络下载更新的代码并动态加载,以达到实现热更新的目的。实现方式包括:(1) AssetBundle:将游戏的资源打包成AssetBundle,上传到服务器端,游戏启动时通过网络下载需要更新的AssetBundle并动态加载。

2023-06-02 12:07:04 611

原创 Unity塔防游戏的制作与实现

我们可以使用Unity的2D Tilemap工具来创建地图,并使用Unity的Sprite Renderer组件将塔和怪物放置在地图上。我们可以使用Unity的2D Tilemap工具来创建地图,并使用Unity的Sprite Renderer组件将塔和怪物放置在地图上。然后,我们需要导入一些必要的素材,如地图、塔、怪物、子弹等。然后,我们需要导入一些必要的素材,如地图、塔、怪物、子弹等。在塔防游戏中,玩家需要建造塔来防御怪物的进攻。在塔防游戏中,玩家需要建造塔来防御怪物的进攻。二、塔防游戏的逻辑实现。

2023-06-01 15:28:15 1253

原创 unity打造基于xLua热更新框架

在Start函数中,我们初始化了Lua虚拟机,并使用DoString函数执行了Lua脚本。在这个实例中,我们将创建一个简单的游戏场景,然后使用xLua框架来实现游戏逻辑的热更新。在这个示例中,我们定义了一个变量和一个函数。xLua是一款基于Lua的热更新框架,它可以在游戏运行时动态加载Lua脚本,实现游戏逻辑的更新。在这个示例中,我们在Update函数中检测是否按下了空格键,并在按下空格键时重新加载Lua脚本。xLua是一款基于Lua的热更新框架,它可以将Lua脚本动态加载到游戏中,实现游戏逻辑的更新。

2023-05-30 13:55:32 1589

01-黄金矿工Demo演示.mp4

blank老师现身说课,为我们讲解关于黄金矿工小游戏制作过程与相应的实战案例授课,请大家认真学习,学好游戏开发、走遍天下都不怕

2020-08-11

android 电阻触摸屏校验源码及分析 for android 2.1

最近做了个android 电阻式触摸屏的校验,分析请参考我blog的文章。 少上传了property_service.c 只修改了这个函数 static int check_perms(const char *name, unsigned int uid, int gid) { int i; if (uid == 0) return 1; if(!strncmp(name, "ro.", 3)) name +=3; for (i = 0; property_perms[i].prefix; i++) { int tmp; if (strncmp(property_perms[i].prefix, name, strlen(property_perms[i].prefix)) == 0) { if ((uid && property_perms[i].uid == uid) || (gid && property_perms[i].gid == gid)) { return 1; } } } if(strncmp("ts.config.calibrate",name,strlen("ts.config.calibrate"))==0) { return 1; } return 0; }

2010-08-15

android soft button 软按键

android framework 设计制造了很多垃圾概念,反引以为豪,反正我是看不懂,给和我一样痛苦要开发android 的同仁,fuck android framework And KISS 原则万岁!具体原则可以参考我的blog文章

2010-08-05

lex&yacc简明教程

如何时用通用模板的词法分析器,可以借助yacc,lex实现自己语言的词法分析,可以运用于脚本设计,以及虚拟机

2009-04-22

一种改进的Sobel图像边缘检测算法

在经典的soble算法的基础上提出的一种改进soble边缘检测算法

2009-04-22

ffmpeg wma定点解码库

在嵌入式设备中有相当一部分没有浮点运算器,浮点运算都是软件模拟的,所以对于mplayer,xine等基于的ffmpeg的WMA需要做定点优化,这个ffmepg对WMA做了定点转换,如果用于商业请告诉我一声([email protected]),我会很高兴,如果你硬是不说也没人会指责

2009-02-27

Linux内核设计与实现.pdf

linux 内核阅读书籍,不在迷失在浩瀚的源码海洋

2008-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除