Unity企业内训(第4讲:Unity物理系统)(Yanlz+Unity+物理系统+立钻哥哥+碰撞器+刚体+碰撞检测+触发事件+物理材质+射线+Collider+Rigidbody+Ray+)

《Unity企业内训》

版本

作者

参与者

完成日期

备注

Unity_Training_V01_1.0

严立钻

 

2018.09.11

 

 

 

 

 

 

 

 

##《Unity企业内训》发布说明:

++++“Unity企业内训”是对企业内非程序员岗位的Unity普及,比如产品运营等,让相关人员熟悉Unity开发过程,更了解程序员的开发流程和技能点;有利于沟通交流和产品需求提出及优化;

++++“Unity企业内训”定位是非程序员岗位,再次声明:程序员请绕行,产品运营美术等请进入

 

 

##《Unity企业内训》目录:

++++Unity企业内训(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

#第1讲:Unity中C#开发基础

#第2讲:Unity引擎基础

#第3讲:Unity面向组件开发

#第4讲:Unity物理系统

#第5讲:UGUI

#第6讲:Unity动画系统

#第7讲:Unity特效渲染

#第8讲:Unity数据存储

#第9讲:Unity中Sqlite数据库

#第10讲:Unity中的资源管理

#第11讲:Unity中的性能优化

#第12讲:Unity网络

#第13讲:设计模式

#第14讲:UML类图

#第15讲:Shader编程

#第16讲:游戏框架

#第17讲:Lua热更新

#第18讲:UnityAPI

#第19讲:VIVE开发

#第20讲:Oculus开发

#第21讲:Unity案例分析

#第22讲:VRTK跨平台开发

 

 

 

 

 

 

#第4讲:Unity物理系统

#第4讲:Unity物理系统

#第4讲:Unity物理系统

++++4.1、人机交互

++++4.2、碰撞器

++++4.3、刚体

++++4.4、碰撞检测

++++4.5、触发事件

++++4.6、物理材质

++++4.7、射线

 

 

 

 

##4.1、人机交互

##4.1、人机交互

++4.1、人机交互

++++4.1.1、Input类简介

++++4.1.2、键盘输入的常用方法

++++4.1.3、输入管理器

++++4.1.4、鼠标的属性和方法

 

 

###4.1.1、Input类简介

###4.1.1、Input类简介

++4.1.1、Input类简介

++++立钻哥哥:Input类是输入系统的接口,使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据,可以通过该类来实现外部设备控制游戏场景里面的物体

 

 

 

###4.1.2、键盘输入的常用方法

###4.1.2、键盘输入的常用方法

++4.1.2、键盘输入的常用方法

++++立钻哥哥:键盘输入的常用方法:GetKey()、GetKeyDown()、GetKeyUp()

++++[GetKey()]:按键按下期间返回true

++++[GetKeyDown()]:按键按下的第一帧返回true

++++[GetKeyUp()]:按键松开的第一帧返回true

 

 

 

###4.1.3、输入管理器

###4.1.3、输入管理器

++4.1.3、输入管理器

++++立钻哥哥:Unity提供了输入管理器,在输入管理器中我们可以自定义一些虚拟的轴,通过获取这些轴的数值来让物体旋转移动

++++[输入管理器(InputManager)]:[Edit]=>[Project Settings]=>[Input]:打开输入管理器

++++通过名字得到虚拟的值:

static float GetAxis(string axisName);

float hor = Input.GetAxis(Horizontal);

 

 

 

###4.1.4、鼠标的属性和方法

###4.1.4、鼠标的属性和方法

++4.1.4、鼠标的属性和方法

++++立钻哥哥:鼠标的常用属性和方法:mousePositionGetMouseButtonDown()、GetMouseButtonUp()、GetMouseButton()、GetAxis(Mouse X)、GetAxis(Mouse Y)、GetAxis(Mouse ScrollWheel)

++++[mousePosition]:得到当前鼠标位置

++++[GetMouseButtonDown()]:鼠标按键按下的第一帧返回true

++++[GetMouseButtonUp()]:鼠标按键松开的第一帧返回true

++++[GetMouseButton()]:鼠标按键按下期间一直返回true

++++[GetAxis(Mouse X)]:得到一帧内鼠标在水平方向的移动距离

++++[GetAxis(Mouse Y)]:得到一帧内鼠标在垂直方向的移动距离

++++[GetAxis(Mouse ScrollWheel)]:获取鼠标滚轮的值

 

 

 

 

 

 

 

 

 

##4.2、碰撞器(Collider)

##4.2、碰撞器(Collider)

++4.2、碰撞器(Collider)

++++4.2.1、Collider碰撞器

++++4.2.2、加上碰撞器的游戏对象可响应的回调

 

 

###4.2.1、Collider碰撞器

###4.2.1、Collider碰撞器

++4.2.1、Collider碰撞器

++++立钻哥哥:当我们创建一个Cube的时候会自带一个[Box Collider]这样的一个组件

 

++Collider

++++立钻哥哥:对于规则的游戏物体可以使用引擎提供的碰撞器;对于一些大的场景,其碰撞网格可以由建模师提供

 

 

 

###4.2.2、加上碰撞器的游戏对象可响应的回调

###4.2.2、加上碰撞器的游戏对象可响应的回调

++4.2.2、加上碰撞器的游戏对象可响应的回调

++++立钻哥哥:加上碰撞器的游戏对象就可以响应系统写好的几个回调方法

++++[OnMouseDown()]:鼠标在Collider之上,按下鼠标,该事件即被触发

++++[OnMouseDrag()]:鼠标在Collider之上,当鼠标拖动时触发

++++[OnMouseEnter()]:移动鼠标进入Collider区域的时候,该事件被触发

++++[OnMouseExit()]:移动鼠标移出Collider区域的时候,该事件被触发

++++[OnMouseOver()]:鼠标处于Collider之上时,每帧都会调用该事件

++++[OnMouseUp()]:当鼠标弹起的时候,该事件被触发调用

++++[OnMouseUpAsButton()]:当鼠标在同一个Collider上,按下又弹起的情况下会触发调用该事件

 

 

 

 

 

 

 

 

 

##4.3、刚体(Rigidbody)

##4.3、刚体(Rigidbody)

++4.3、刚体(Rigidbody)

++++4.3.1、刚体的作用

++++4.3.2、常用属性

++++4.3.3、常用方法

 

 

###4.3.1、刚体的作用

###4.3.1、刚体的作用

++4.3.1、刚体的作用

++++立钻哥哥:在游戏中使用物体引擎可以真实的模拟出现实世界中的一些物理效果,例如重力,摩擦力,碰撞等

++++在Unity中使用的是PhysicX物理引擎,该引擎可以在3D世界中模拟需要的效果,它渲染的游戏画面非常的逼真,可以给玩家身临其境的感觉

++++在Unity中要使一个物体受物理引擎的控制,主要是通过刚体组件来实现的

++++刚体的作用:重力、反作用力、阻力、外加力

 

++刚体的作用

++++[重力]:自由落体

++++[反作用力]:例如,与其它物体碰撞

++++[阻力]:受到阻力会慢慢停止运动

++++[外加力]:可以给物体施加一个外力

 

 

 

###4.3.2、常用属性

###4.3.2、常用属性

++4.3.2、常用属性

++++立钻哥哥:有了刚体组件(Rigidbody)就意味着有刚体类,手动的给物体添加力这就用到了刚体的一些属性和方法

++++[velocity]:刚体的速度

++++[angularVelocity]:刚体的角速度

++++[drag]:物体的阻力

++++[angularDrag]:物体的角阻力

++++[mass]:刚体的质量

++++[useGravity]:是否受重力影响

++++[isKinematic]:是否使用动力学

++++[freezeRotation]:是否冻结旋转

++++[collisionDetectionMode]:碰撞检测模式

++++[position]:刚体位置

++++[rotation]:刚体旋转

 

 

 

###4.3.3、常用方法

###4.3.3、常用方法

++4.3.3、常用方法

++++立钻哥哥:Rigidbody类常用方法:AddForce()、AddExplosionForce()、AddForceAtPosition()、AddRelativeForce()、AddRelativeForce()、AddRelativeTorque()、MovePosition()

++++[AddForce()]:给刚体添加一个力

++++[AddExplosionForce()]:给刚体添加一个力,模拟爆炸效果

++++[AddForceAtPosition()]:在指定的位置添加一个力

++++[AddRelativeForce()]:添加相对力

++++[AddRelativeTorque()]:添加相对力矩

++++[MovePosition()]:使用刚体移动物体到指定位置

 

 

 

 

 

 

 

 

 

##4.4、碰撞检测(Collider + Rigidbody)

##4.4、碰撞检测(Collider + Rigidbody)

++4.4、碰撞检测(Collider + Rigidbody)

++++4.4.1、碰撞的条件

++++4.4.2、碰撞分类

++++4.4.3、回调方法

 

 

###4.4.1、碰撞的条件

###4.4.1、碰撞的条件

++4.4.1、碰撞的条件

++++立钻哥哥:两个物体发生碰撞的时候会有一些炫酷的碰撞效果,像赛车游戏车辆相撞会有火花效果

++++比如王者荣耀,玩家能不能穿过防御塔,都用到碰撞检测

 

++两个物体发生碰撞的条件

++++条件1:发生碰撞的两个物体都必须带有[Collider]

++++条件2:发生碰撞的两个物体至少有一个带有物体[Rigidbody]

++++条件3:发生碰撞的两个物体必须有相对运动

 

 

 

###4.4.2、碰撞分类

###4.4.2、碰撞分类

++4.4.2、碰撞分类

++++立钻哥哥:碰撞分类:静态碰撞器[Static Collider]、刚体碰撞器[Rigidbody Collider]、运动学刚体碰撞器[isKinematic]

++++[静态碰撞器(Static Collider]:只有碰撞器没有刚体的物体;现象:保持静止或者轻微移动,如平面、树木

++++[刚体碰撞器(Rigidbody Collider]:具有刚体和碰撞器的物体;现象:完全受物理引擎影响

++++[运动学刚体碰撞器(IsKinematic]:带刚体,且勾选“Is Kinematic”,此碰撞器不能添加力,只能通过transform移动

 

 

 

###4.4.3、回调方法

###4.4.3、回调方法

++4.4.3、回调方法

++++立钻哥哥:获取两物体碰撞,Unity提供了回调方法:OnCollisionEnter()、OnCollisionStay()、OnCollisionExit()

++++[OnCollisionEnter(Collision other)]:碰撞开始一瞬间被调用

++++[OnCollisionStay(Collision other)]:一直保持碰撞状态时被调用

++++[OnCollisionExit(Collision other)]:碰撞分离的一瞬间被调用

 

 

 

 

 

 

 

 

 

##4.5、触发事件(Collider + Rigidbody + Trigger)

##4.5、触发事件(Collider + Rigidbody + Trigger)

++4.5、触发事件(Collider + Rigidbody + Trigger)

++++4.5.1、物体的空间检测

++++4.5.2、触发器

++++4.5.3、回调方法

 

 

###4.5.1、物体的空间检测

###4.5.1、物体的空间检测

++4.5.1、物体的空间检测

++++立钻哥哥:判断一个角色是否在某个空间区域,除了直接计算Transform组件的position值外,还可以利用触发检测

 

 

 

###4.5.2、触发器

###4.5.2、触发器

++4.5.2、触发器

++++立钻哥哥:触发器事件执行的条件:两个物体上都要带碰撞器(Collider),至少带有一个刚体(Rigidbody),并且两物体至少有一个把触发器打开(IsTrigger

 

 

 

###4.5.3、回调方法

###4.5.3、回调方法

++4.5.3、回调方法

++++立钻哥哥:触发器的回调方法:OnTriggerEnter()、OnTriggerStay()、OnTriggerExit()

++++[OnTriggerEnter(Collider other)]:进入触发器的时候调用一次

++++[OnTriggerStay(Collider other)]:处于某个触发器之中的时候持续调用

++++[OnTriggerExit(Collider other)]:退出触发器的时候调用一次

 

++Trigger事件

++++立钻哥哥:事件传入参数[Collider other]中的Collider参数:attachedboundsenabledisTriggermaterialsharedMaterial

 

 

 

 

 

 

 

 

 

##4.6、物理材质(Physic Material)

##4.6、物理材质(Physic Material)

++4.6、物理材质(Physic Material)

++++4.6.1、物理材质的创建

++++4.6.2、物理材质属性设置

++++4.6.3、物理材质的使用

 

 

###4.6.1、物理材质的创建

###4.6.1、物理材质的创建

++4.6.1、物理材质的创建

++++立钻哥哥:在Project窗口中点击右键【Create => Physic Material】创建物理材质

++++物理材质用于调整:摩擦力和反弹力

 

 

 

###4.6.2、物理材质属性设置

###4.6.2、物理材质属性设置

++4.6.2、物理材质属性设置

++++立钻哥哥:物理材质属性:动态摩擦系数(Dynamic Friction)、静态摩擦系数(Static Friction)、反弹系数(Bounciness)、组合摩擦力(Friction Combine)、组合弹力(Bounce Combine

++++[Friction Combine(组合摩擦力)]:Average、Minimun、Multiply、Maxinum

 

 

 

###4.6.3、物理材质的使用

###4.6.3、物理材质的使用

++4.6.3、物理材质的使用

++++立钻哥哥:创建好的物理材质拖到“Box Collider”的“Material”

 

 

 

 

 

 

 

 

 

##4.7、射线(Ray)

##4.7、射线(Ray)

++4.7、射线(Ray)

++++4.7.1、射线碰撞简介

++++4.7.2、射线的创建

++++4.7.3、射线碰撞的应用

 

 

###4.7.1、射线碰撞简介

###4.7.1、射线碰撞简介

++4.7.1、射线碰撞简介

++++立钻哥哥:思考如何实现物体移动到鼠标点击的位置

 

++射线碰撞

++++立钻哥哥:Unity提供了射线机制,通过虚拟射线检测所碰撞到的物体

 

 

 

###4.7.2、射线的创建

###4.7.2、射线的创建

++4.7.2、射线的创建

++++立钻哥哥:创建射线:Ray ray = new Ray();

public Ray(Vector3 orgin, Vector3 direction);

++++[origin]:射线发射的原点

++++[direction]:射线发射的方向

Ray ray = new Ray(transform.position, transform.forward);

 

 

 

###4.7.3、射线碰撞的应用

###4.7.3、射线碰撞的应用

++4.7.3、射线碰撞的应用

++++立钻哥哥:使用Physics类的Raycast()方法实现射线碰撞检测功能

bool Raycast(Ray ray, out RaycastHit hitInfo);

++++[ray]:要发射的射线

++++[hitInfo]:碰撞信息

 

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

++++立钻哥哥:从主摄像机到鼠标点击位置创建一条射线

 

 

 

 

 

 

 

 

 

#第5讲:UGUI

#第5讲:UGUI

++++Unity企业内训(第5讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83963811

 

 

 

 

 

 

 

 

++立钻哥哥推荐的拓展学习链接(Link_Url)

立钻哥哥推荐的拓展学习链接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++Unity企业内训(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

++++Unity企业内训(第1讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82634733

++++Unity企业内训(第2讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82861180

++++Unity企业内训(第3讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82927699

++++Unity企业内训(第4讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83479776

++++VR实验:以太网帧的构成https://blog.csdn.net/VRunSoftYanlz/article/details/82598140

++++FrameVR示例V0913https://blog.csdn.net/VRunSoftYanlz/article/details/82808498

++++FrameVR示例V1003https://blog.csdn.net/VRunSoftYanlz/article/details/83066516

++++计算机组成原理(教材篇)https://blog.csdn.net/VRunSoftYanlz/article/details/82719129

++++HTC_VIVE开发基础https://blog.csdn.net/VRunSoftYanlz/article/details/81989970

++++Oculus杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82469850

++++Oculus安装使用https://blog.csdn.net/VRunSoftYanlz/article/details/82718982

++++VRTK杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82562993

++++VRTK快速入门(杂谈)https://blog.csdn.net/VRunSoftYanlz/article/details/82955267

++++VRTK官方示例(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82955410

++++VRTK代码结构(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82780085

++++VRTK(SceneResources)https://blog.csdn.net/VRunSoftYanlz/article/details/82795400

++++VRTK_ControllerEventshttps://blog.csdn.net/VRunSoftYanlz/article/details/83099512

++++VRTK_InteractTouchhttps://blog.csdn.net/VRunSoftYanlz/article/details/83120220

++++Unity5.x用户手册https://blog.csdn.net/VRunSoftYanlz/article/details/81712741

++++Unity面试题ABChttps://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++Unity面试题Dhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630838

++++Unity面试题Ehttps://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity面试题Fhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630945

++++Cocos2dx面试题https://blog.csdn.net/VRunSoftYanlz/article/details/78630967

++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818

++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502

++++Lua快速入门篇(基础概述)https://blog.csdn.net/VRunSoftYanlz/article/details/81041359

++++框架知识点https://blog.csdn.net/VRunSoftYanlz/article/details/80862879

++++游戏框架(UI框架夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80781140

++++游戏框架(初探篇)https://blog.csdn.net/VRunSoftYanlz/article/details/80630325

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++专题:设计模式(精华篇)https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++Unity案例(Vehicle)https://blog.csdn.net/VRunSoftYanlz/article/details/82355876

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++Unity知识点0008https://blog.csdn.net/VRunSoftYanlz/article/details/81153606

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++UnityAPI.Rigidbody刚体https://blog.csdn.net/VRunSoftYanlz/article/details/81784053

++++UnityAPI.Material材质https://blog.csdn.net/VRunSoftYanlz/article/details/81814303

++++UnityAPI.Android安卓https://blog.csdn.net/VRunSoftYanlz/article/details/81843193

++++UnityAPI.AndroidJNI安卓JNIhttps://blog.csdn.net/VRunSoftYanlz/article/details/81879345

++++UnityAPI.Transform变换https://blog.csdn.net/VRunSoftYanlz/article/details/81916293

++++UnityAPI.WheelCollider轮碰撞器https://blog.csdn.net/VRunSoftYanlz/article/details/82356217

++++UnityAPI.Resources资源https://blog.csdn.net/VRunSoftYanlz/article/details/83155518

++++JSON数据结构https://blog.csdn.net/VRunSoftYanlz/article/details/82026644

++++CocosStudio快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/82356839

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

--_--VRunSoft:lovezuanzuan--_--

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款跨平台的游戏开发引擎,而Protobuf(Protocol Buffers)是一种数据序列化格式。在Unity中使用Protobuf可以实现网络通信、数据存储和数据传输等功能。 Unity中使用Protobuf需要先定义消息的数据结构,然后使用Protobuf编译将定义的消息结构转换为对应的代码文件。这些代码文件可以用于在Unity中进行序列化和反序列化操作。 通过使用Protobuf,可以将复杂的数据结构序列化为二进制格式,从而实现高效的数据传输和存储。Protobuf具有跨平台、高效、可扩展等特点,因此在游戏开发中被广泛应用。 在Unity中使用Protobuf可以实现以下功能: 1. 网络通信:通过将消息序列化为二进制格式,可以在客户端和服务之间进行高效的数据传输。 2. 数据存储:将游戏中的数据序列化为二进制格式,可以将其保存到本地文件或数据库中,实现数据的持久化存储。 3. 数据传输:将游戏中的数据序列化为二进制格式,可以在不同的场景或对象之间进行数据传递,方便实现数据共享和交互。 使用Unity+Protobuf的步骤如下: 1. 定义消息结构:使用Protobuf的语法定义消息的数据结构,包括字段类型、字段名称等。 2. 编译消息结构:使用Protobuf编译将消息结构转换为对应的代码文件,生成用于序列化和反序列化的代码。 3. 在Unity中使用:将生成的代码文件导入到Unity项目中,然后就可以在代码中使用Protobuf进行数据的序列化和反序列化操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值