unity3D 魔兽争霸游戏开发案例教程

news2024/11/25 20:45:30

文章连载更新中,可以提前领取素材进行预习,自学
素材领取:私信发送 领取RPG网络开发教材

这里写目录标题

    • 游戏玩法
    • 这门课适合哪些人学习
    • 学完了能达到什么效果
    • 项目准备
    • 基础系统
    • 战斗系统
    • 同步设计精讲
    • 社交系统
    • 副本系统
    • 优化
    • 项目准备正文
    • 美术准备:
    • 模型数量对内存的要求
    • 数量和面数对帧数的影响
    • 优化方向
    • 技术准备
    • 基础系统
    • 背包->道具
    • 合成系统
    • 野外地图怪物生成,攻城怪物生成
    • 任务系统
    • 道具掉落,道具拾取
    • **防作弊设计**
    • 战斗系统

点击观看视频版专题

UnityRPG网游开发专题

游戏玩法

游戏目标:保护水晶不被怪物摧毁。共有42波怪物。怪物强度随着波数加强
地图环境:周边有各种怪物,打倒之后都会随机掉落各种宝物,NPC和商店提供道具和装备支援

玩家之间需要把握好发育,防守,探索的时间和人员分配,良好的配合是致胜的关键

课程介绍

这门课适合哪些人学习

想向制作RPG类型游戏的个人或3-10以下的团队
课程是案例复盘讲解,用具体案例讲解整个游戏开发过程
涉及到项目管理,团队协同,编程技术栈等。

在时间安排上。占比最多的是程序设计和实现原理,开发思想。
为开发者指引方向,意识中形成开发版图。
为开发者指引方向,意识中形成开发版图。
为开发者指引方向,意识中形成开发版图。

具体细节和疑问也会开放专用的学习群补充。
没有展开的细节部分,大多都可以通过搜索引擎自行补充。

比如之前的《Unity开发战棋手游》专题
课程只提及了A星寻路的关键字,没有具体展开。
有开发者会疑惑?为什么不把A星的内容补充完整。
因为A星的原理,实现算法都可以在互联上查阅到很详细的文章,视频资料。

所以课程的学习方法是形成知识索引,需要用到时,再去展开细节深入学习。
这样的学习方法更能适应高速发展的游戏行业。

学完了能达到什么效果

课程内容包含了网游中80%常见功能
开发者对内容掌握90%以上
(独立开发者)在基础上打造属于个人的RPG游戏
(小团队)助力团队快速成型,把控项目开发进度。

掌握50%以上,公司初级开发岗(UI模块,基础功能),或者独立游戏开发都游刃有余。

比如:我们收到需求内容:制作背包,装备,合成系统,排行榜。需要多长时间完成?

把开发效率划分成4个阶段
开发效率对比:
没做过<有了解过<实现过类似案例<源码复用

效率差距原因:
没做过<有了解过 (功能设计时间)
有了解<实现过类似案例 (编码熟练度)
实现类似案例<复用源码(节省编码和代码测试时间,因为能够复用的代码一般都是验证测试过的)

课程包含了大量的常见功能设计,
这些案例的能够让开发快速积累经验
学完后开发效率能在2-4的阶段之间

课程目录

项目准备

策划准备,美术准备

基础系统

UI框架,NPC,道具,背包,商店,装备,任务系统
合成系统,角色选择,掉宝系统,
野外地图怪物生成,攻城怪物生成

战斗系统

基础属性,成长
客户端和服务器的技能设计
技能,动作,攻击配表设计
Buff,Debuff系统
怪物AI

同步设计精讲

位置同步,技能同步,特效同步,属性同步

社交系统

聊天,好友

副本系统

副本设计和实现

优化

AOI,美术相关的建议

正文

项目准备正文

视频讲解版
立项,策划准备,美术准备
U3D版本:unity2020.3.31f1c1
IDEA:visual studio 2019

策划准备:
编写策划文档,作用:便于项目管理。进度推动。多人协同开发。
要开发的游戏越大,要准备的文档越多。

文档是全部都写好了再做开发,还是边写策划边开发?

//假设项目组只有3个人,策划,美术,程序
在这里插入图片描述

可以看出项目越大,敏捷开发的效率就越高, 大多数项目都是使用具备快速迭代的敏捷开发思想

所以策划并不是一次性写好的,而是边写边提交给技术和美术。
有需要时还会口头交流作为补充。

这种项目推进方式不仅在游戏行业适用,在其他行业也有类似的思想,比如影视动漫。

踏出游戏开发的第一步:
以本案例举例:整理策划文档“保护水晶不被怪物摧毁。共有42波怪物。怪物强度随着波数跌增”
42个怪物,1个水晶
就需要准备的美术素材怪物和水晶的模型。
我们需要准备多少个模型?
假如42个怪物的样子都不一样,就需要42个模型。
假如怪物都一样,那只需要准备一个模型。

如果等到模型齐全了再施工,明显是不符合敏捷开发思想的。
从设计上我们坚持42个怪物。通过配表设置怪物外观。
美术前期只需提供一个模型即可,表的内容根据美术的产出速度调整即可。

在这里插入图片描述

在这里插入图片描述

有了怪物之后,自然而然的会关联其他需要的材料,比如数值,血量,攻击力->做怪物的数值表
做好了怪物之后
接着往下制作做英雄人物,也是需要模型,数值
这时候就可以照搬/复用之前的方案。
在做着英雄功能的时候,自然会关联到技能系统,装备道具,升级方案等等。

到了这里,我们就打开了局面,剩下的功能模块会跟着经验的积累,越做越清晰。
最后项目如同抽丝剥茧一样。
最后资料里面附带常见的策划表,可以作为参考模板,积累案例经验。

在这里插入图片描述

在这里插入图片描述

美术准备:

美术有什么要求?可以参照文档里的《美术资源规范》。
文档定制了场景,特效,UI,模型(贴图,面数)(适合拥有美术部门团队)
大团队和小团队的管理差异建议

美术准备规范可以划分两种,资源归类管理,资源质量管理

我们会从玩法设计,手机硬件要求,运行效果这三个维度讲清楚美术资源的参考标准
 
  
   
    
     
      
       
 在这里插入图片描述

哪些手机能够玩到我们的游戏?硬件要求

模型数量对内存的要求

32种模型同时存在场景中。
32模型一样的怪,和32个怪模型各不相同的怪,内存占用是有大约内存占用是32倍。(模型越多对内存要求也就越高)
至少需要1.5G以上的运行内存(2016后的机子可以运行)
以下是一个模型的数据
在这里插入图片描述

数量和面数对帧数的影响

在这里插入图片描述

在这里插入图片描述
高端机60-57帧:
在这里插入图片描述

在这里插入图片描述!!
中端机60-55:
在这里插入图片描述

在这里插入图片描述

低端机:10fps
在这里插入图片描述

优化方向

怪物数量60->49帧
在这里插入图片描述
10个55帧
在这里插入图片描述
加载地形->28帧
在这里插入图片描述
地形优化->44帧
在这里插入图片描述
地形优化前的面数
在这里插入图片描述
优化后的面数
在这里插入图片描述
在这里插入图片描述
优化后2w3->4k8
在这里插入图片描述

建议:
到了这里对游戏性能,模型规范,设计玩法,目标用户,优化代价有了一定的!了解。

面向中,高端机型的机型>50帧(无需优化)
面向低端机型的机型<30帧(酌情考虑)
市场常见做法:
1:放弃硬件不达标的用户(不让玩)
2:提示用户得不到预期的体验(可以玩,但体验质量无法保证)
3:分批次扩大用户目标,第一个版本的用户目标(中,高)面向低端机型用户的优化放在以后版本,逐步扩大覆盖群体

在这里插入图片描述

到这里们就讲清楚了玩法设计,性能表现和模型参数的关系。

接下来讲资源归类管理。
模型,特效,装备道具图片
模型管理
在这里插入图片描述

读取策划表,为模型资源分配资源标签,用于程序读取
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

特效命名规则:
在这里插入图片描述在这里插入图片描述

道具图片:出图尺寸-资源名规则->策划表的道具id=图片名
图片大小(512x512,如果超过了内存瓶颈(6g运存下降至4g),可以使用UNITY3D引擎压缩图片大小降低内存占用率)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过上面的配置表,我们就制定好了怪物的属性,掉落信息等。

文章出现的代码图片,右下角有UNITYLOG的为客户端代码,否则是服务端代码
加载怪物属性
在这里插入图片描述

对于没有美术部门的团队,更多的是从unity资源商店获取素材资源,根据项目要求选择适合的资源。
比如:手游项目建议选择为手机平台制作的资源。
在这里插入图片描述
在这里插入图片描述
对小团队的建议
资源归类规范建议。
由于资源的制作者不同,所以资源的规范和目录结构也不尽相同。
如果非要按照制定的规范去管理资源,是需要花费大量时间整理资源的。(生般硬套)
建议能够整理的尽量整理。

案例的方案是:捉大放小。
我们的案例会把所有的模型素材都整理到模型目录下,但是具体材质,图片的命名不作处理。

技术准备

具备UNITY基础,C#编程基础,多人开发管理工具的使用(SVN,Git)
客户端的理解=>框架设计,资源热更和管理,场景管理,UI管理(可回顾战棋专题)
服务端的理解=>框架设计,网络消息收发,网络协议设计,生成。(专题讲解链接)
最起码要能编写聊天室功能
在这里插入图片描述
也可以先跟着视频先跑一遍,学习课程的设计思想,回头再查漏补缺
比如资源热更管理,课程花了1个多小时讲了从热更的诞生到实现,
但在使用层面只有2步:资源打标签,调用资源加载的API
所以要根据自身需求灵活分配学习时间
建议:
1:想快速做出一款独立游戏,只需要知道怎么用(套方案)。
2:在职U3D开发,一直都是做基础模块,UI模块,想要在技术上查漏补缺,
则可以展开细节系统的学习。

基础系统

角色选择,NPC,道具,背包,商店,装备,UI框架,合成系统
任务系统,
野外地图怪物生成,攻城怪物生成
道具掉落,道具拾取

创建角色->加载场景->找到商店NPC->购买装备->打开背包->穿戴装备。
(登录->大厅->创建房间 查看以往专题)->角色选择->加载场景,NPC,道具,背包,商店,装备,UI框架

c=客户端
s=服务器
创建角色逻辑(c显示可选择的人物->c选择人物->s广播->c锁定选择->s广播-> s判断选人结束->s广播开始游戏->c加载地图场景)

1:读策划表,显示可选英雄图标(根据英雄ID加载图片资源)
在这里插入图片描述

通过xls2Json生成数据和模型便于程序读取
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过AB工具给资源打了标签才能加载资源在这里插入图片描述
2:玩家点击英雄图标->定制协议->发送选角消息在这里插入图片描述
在这里插入图片描述

服务器处理过程->存储玩家的选择数据,广播消息,所有客户端更新选角UI

在这里插入图片描述
为什么服务器要存储玩家的选定信息?玩家断线重连需要同步选定结果
在这里插入图片描述

客户端收到选角消息
在这里插入图片描述
当所有人都选择好角色后,服务器初始化数据,通知客户端
在这里插入图片描述
客户端收到开始游戏消息->显示加载UI并加载场景
在这里插入图片描述
在这里插入图片描述

同样的场景资源也打了资源标签
在这里插入图片描述
(资源管理)创建角色->加载场景->找到商店NPC->购买装备->打开背包->穿戴装备。

点击商店NPC,显示商店UI->选择购买装备->打开背包->穿戴装备->创建角色.
NPC功能->NPC怎么加载显示?怎么交互?->交互的内容是什么?
商店NPC->点击屏幕交互->打开商店UI
模板方法:XXNPC->点击屏幕交互->点击后打开XX功能…

客户端NPC怎么加载显示?根据地图的NPC配表,加载模型

在这里插入图片描述
在这里插入图片描述
点击交互
在这里插入图片描述
点击NPC后的处理逻辑,打开商店
在这里插入图片描述

商店功能和UI框架
加载商店UI。
在这里插入图片描述

商店UI展示逻辑
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击购买按钮,发送消息给服务器
在这里插入图片描述
服务器处理过程->处理玩家金钱是否足够,背包是否已满,如果条件满足则把道具放到玩家背包里。
在这里插入图片描述
从商店购买道具之后,在背包中查看已有道具。

UI框架,控件初始化(Start),关闭(Close),差异化是控件的显示规则,按钮点击业务处理
比如商店显示道具的购买按钮,而背包不显示。
商店图片点击时,可以发送购买请求。
背包图片点击时,可以发送丢弃请求
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
每个功能都有各自的预制体和脚本
每有一个新的功能增加时,就添加一个预制和脚本,便于拓展
在这里插入图片描述

每个UI负责自己的显示内容,在此基础上可以拓展出N个面板,比如HelloWorldPanel

c点击购买->s判断金币数量,物品添加到玩家背包,返回购买结果->

背包->道具

在这里插入图片描述

C打开背包->根据配表ID,显示背包道具
购买的道具数据存放到角色的背包服务器的数据里
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

服务器收到请求
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
道具包含很多信息,信息传输的数据包的大小越小越好
考虑(并发,宽带流量,数据包反序列化消耗等)。
服务器只传物品ID,是为了减少通信数据包的大小
客户端可以对照物品表ID自取所需数据。
也因为如此,很多数功能都有ID索引取对应信息的设计

客户端拿到数据刷新UI组件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击显示道具详细信息
在这里插入图片描述

点击显示道具按钮属性
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
道具数据变更->更新背包数据
在这里插入图片描述

客户端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

道具逻辑
在这里插入图片描述
背包-道具完。

C点击穿戴->S计算穿戴装备属性->S通知属性,装备栏发生了变更->C根据数据刷新UI

商店->交互设计->道具数据设计

道具设计配表->穿戴装备

到这里讲解了基础功能的开发流程的核心,只要掌握了这些思想,很多功能都可以无限复用这套思想去迭代更多的功能。
合成系统,掉宝系统(快速带一带,给开发者积累案例经验)

合成系统

讲解配表,思想,客户端只需要发送合成ID,合成材料读表

野外地图怪物生成,攻城怪物生成

读表配属性,生成规则代码片段

任务系统

递交材料任务,击杀怪物任务,2种

道具掉落,道具拾取

xxxxxxxxxxx

防作弊设计

道具数据由服务器持有,防止用户作弊修改道具数量->数据安全的角度

为什么有些网游会存在外挂呢?
比如《冒险岛》(Maplestory)的全屏攻击,全屏捡取物品,锁血等。
steam上的PC的《绝地求生》,早期有道具透视外挂。
绝地求生
游戏的本身设计是场景里有各种补给道具,在设计上需要玩家地图探索获取。
后来出了作弊工具,玩家可以通过作弊手段查看游戏里每个道具的位置。
显然用了作弊工具的能更快获取更强大的道具,破坏了游戏平衡。

主要因为道具的数据和分布数据由客户端持有和计算,服务器不参与校验。
如何要防止这种作弊手段,就需要把道具的拾取逻辑由交给服务器计算,并且根据玩家的位置通知区域的道具信息。

那为什么会出现这样的设计呢?
开发时间因素:服务器校验数据需要更多的时间设计和编码。
改成防作弊的方案,则需要根据玩家的位置,告知道具信息。
玩家数量太多,则需要做优化处理(AOI)。

对比下来:数据安全的代价,花费更多开发时间,加大了服务器计算压力。加大了运营成本。
当时这款游戏玩法比较创新,制作组更在意玩法是否得到青睐。
制作组结合自身环境,选择了对于他们来说最优解的方案

在这里插入图片描述

《冒险岛》(Maplestory)的全屏打怪,捡物,主要是优先考虑承载人数,所以把大量的计算交给客户端
由客户端负责对消息传输和内存进的加密。即便用了很多加密手段,但始终很难杜绝外挂的出现。

但是即便如此:至今这两款游戏都还在运营。
数据安全要根据游戏的内容和开发时间去做考虑。
比如玩家的金币,钻石,需要付费获得的数值就一定要放在服务器。
其他的数值则需要结合实际情况去考虑。

战斗系统

基础属性,成长
人物属性配表
客户端和服务器的技能设计
技能,动作,攻击配表设计
Buff,Debuff系统
怪物AI
讲解行为树,各种怪物的AI差异

讲解:。。。。。。。。。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

给k8s集群添加负载均衡的能力

常识: k8s没有自带负载均衡能力, 需云服务提供商来做负载均衡, 或者自己装负载均衡控制器. 负载均衡控制器有很多, 这次装Ingress-Nginx https://kubernetes.github.io/ingress-nginx/ 文档里根据环境有很多安装方式,不要用quick start的,因为那是云环境下的. 我们的k8s是自己的…

微信小程序商品分类页最佳实践

首先我们来分析下UI小妹发来的产品原型图&#xff1a; 微信小程序商品分类页需要实现 1.单击左边的商品类目&#xff0c;右侧实现联动跳转到对应商品类目标题&#xff1b; 2.触屏拖动右侧商品列表&#xff0c;右侧跳转到对应商品类目&#xff1b; 2.分析需求我们可以把屏幕分…

使用阿里云服务器三分钟搭建网站教程(详细图文详解)

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程&#xff1a; …

5月编程排行榜出炉,最佳编程语言是谁?

技术的发展日新月异&#xff0c;作为开发者&#xff0c;应该时刻关注这些变化&#xff0c;不断学习才能跟上时代步伐。 编程语言层出不穷&#xff0c;关于“ 最佳编程语言 ”的争论也从未停止&#xff0c;网友们各抒己见...... 网友A&#xff1a; 人生苦短&#xff0c;我选Pyt…

我做了一个 VSCode 插件版的 ChatGPT

大家好&#xff0c;我是风筝&#xff0c;公众号&#xff1a;「古时的风筝」 其实很早之前就想学学 VSCode 插件开发了&#xff0c;但是又不知道做什么&#xff0c;加上我这半吊子前端水平&#xff0c;迟迟没有动手。 最近 ChatGPT 火的一塌糊涂&#xff0c;我也一直在用&#…

StarRocks 3.0 极速统一的湖仓新范式

2023 年 4 月&#xff0c;StarRocks 3.0 版本正式发布&#xff0c;正式开启了 StarRocks 极速统一的新篇章。从 OLAP 到 Lakehouse&#xff0c;从存算一体到存算分离&#xff0c;从 ETL 到 ELT&#xff0c;经过两个大版本后 StarRocks 在为用户创造极速统一的数据分析新范式上有…

视频转二维码怎么操作?简单一步在线生成视频二维码

当今各种各样的视频、电影、电视剧短视频等丰富这我们的生活。但是视频的体积一般都比较大不方便保存和传播&#xff0c;这时候我们就可以把视频、电影等做成二维码图片。扫一扫就能随时随地的观看&#xff0c;非常的方便。那么&#xff0c;要怎么操作呢&#xff1f; 一、什么工…

如何在MySQl数据库中给已有的数据表添加自增ID?

前言: 由于使用MySQL数据库还没有多久的缘故&#xff0c;在搭建后台往数据库导入数据的时候发现新增的表单是没有自增id的&#xff0c;因次就有了上面这个问题。解决方法1、给某一张表先增加一个字段,这里我们就以event_20230417这张表来举例&#xff0c;在数据库命令行输入下面…

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句

OneNote防丢失。 海哥牛逼。 目录 一、ASCII编码二、GB2312-80编码三、全局变量和局部变量四、分支结构五、数组作业12345 一、ASCII编码 1、ASCII 码使用指定的 7 位或 8 位二进制数组合来表示128或 256 种可能的字符。 2、标准 ASCII 码使用 7 位二进制数来表示所有的大写和…

SSM框架学习-AOP介绍及简单案例

1. AOP介绍 面向切面编程&#xff08;Aspect-oriented programming&#xff0c;简称AOP&#xff09;&#xff0c;是一种编程思想和技术&#xff0c;用于将应用程序的业务逻辑与系统服务&#xff08;例如事务、日志记录、安全性等&#xff09;进行分离。AOP可以通过在代码中插入…

多ip,多端口、多域名访问多网站

目录标题 多ip访问多网站当前主机配置多个ip同行配置基于多个虚拟主机标签配置多个网站站点根据配置创建对应资源文件 多端口访问多网站根据配置创建对应资源文件重启httpd服务 基于域名访问多网站创建对应资源文件重启服务 排错方式启动不成功&#xff08;配置文件有问题&…

技术好≠薪资高,业务价值才是王道

2023年软件测试为什么发生巨变&#xff1f; 2023年了&#xff0c;软件测试行业发生了很大的改变&#xff0c;就像今年的金三银四不像是一个高峰期&#xff0c;我觉得有以下原因&#xff1a; 1、整个IT技术人员在行业内角色的转变 变化的一个原因就是现在变成了纯业务价值的导…

stm32 iic调试ds1307 rtc时钟

使用代码 (1条消息) stm32iic调试ds1307rtc时钟&#xff0c;采用iic接口&#xff0c;驱动软件&#xff0c;可以设置&#xff0c;读取ds1307时钟代码资源-CSDN文库 使用STM32调试ds1307&#xff0c;采用iic接口&#xff0c;由于有个项目需要使用外部RTC功能&#xff0c;所以需…

JimuReport积木报表 v1.5.8版本发布—免费的数据可视化报表

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

用frp开源工具,实现内网穿透(详细教程)

本文转载于&#xff1a; https://blog.csdn.net/qq_40903527/article/details/123850647 选取其中的frp内网穿透方式&#xff0c;给大家分享本此教程供大家参考。 ^ - ^ 如果你有一台云服务器&#xff08;有公网IP&#xff09;&#xff0c;或者有使用权&#xff0c;那么 在开…

Vue使用keep-Alive实现从详情页返回到列表页,还能记住当前的page页码以及切换的tab选项

哈喽&#xff0c;大家好&#xff0c;今天遇到一个小需求&#xff0c;就是要求从订单详情页返回到订单列表页&#xff0c;定位到跳转前的page页码和切换对应的tab选项 从我看了大量博主写的文章后&#xff0c;发现可以使用vue中的keep-Alive知识 下面是Vue中讲解keep-alive K…

我先肝了,爆火的Java全能笔记,分布式/开源框架/微服务/性能调优全有

前言 程序员&#xff0c;立之根本还是技术&#xff0c;一个程序员的好坏&#xff0c;虽然不能完全用技术强弱来判断&#xff0c;但是技术水平一定是基础&#xff0c;技术差的程序员只能CRUD&#xff0c;技术不深的程序员也成不了架构师。程序员对于技术的掌握&#xff0c;除了…

如何选择合适的智能氮气柜?

随着电子产品的普及&#xff0c;IC、半导体、精密元件、检测仪器之类的物品对湿度要求越来越高&#xff0c;潮湿、霉菌和金属氧化所造成的损害&#xff0c;随时在发生。人们对于物品的存放环境要求逐渐提高&#xff0c;利用防潮设备如智能氮气柜、电子防潮柜来存储产品也越来越…

《编程思维与实践》1060.浮点数加法

《编程思维与实践》1060.浮点数加法 题目 思路 浮点数可以分为[整数部分].[小数部分],可以将两个部分分开处理,最后再合并,但在处理四舍五入时较为繁琐, 为了方便起见,这里采用将两个部分一起处理的方式: 由于浮点数不超过500位:整数部分最多500位,小数部分最多500位, 所以加法…

gpio 子系统驱动LED

gpio 子系统 API 函数 1、gpio_request 函数 gpio_request 函数用于申请一个 GPIO 管脚&#xff0c;在使用一个 GPIO 之前一定要使用 gpio_request 进行申请&#xff0c;函数原型如下&#xff1a; int gpio_request(unsigned gpio, const char *label)/*函数参数和返回值含义如…