自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 Unity编辑器扩展: 程序化打图集工具

关于编辑器扩展相关的知识,在前面的两篇内容中做了详细的描述,链接地址:Unity编辑器扩展 UI控件篇Unity编辑扩展:功能篇之Json数据编辑器前两篇着重于介绍编辑器界面扩展相关控件接口的使用方式。作为系列文章的第三篇,会更偏重于引擎内编辑器扩展承担 的提升开发效率的功能模块设计通过程序化打图集减少工作量的同时可以稳定全局的管理图集,避免随着项目膨胀手动管理产生资源上的混乱。程序化图集打包UI界面引用图集检测工具图集资源自动/手动加载、卸载框架支持。

2022-09-07 06:00:00 2100 1

原创 Unity编辑扩展:功能篇之Json数据编辑器

编辑器扩展算是比较纯粹的功能开发,基本没有什么理论知识,都是一些Unity相关接口的使用与数据类型的设计操作等。在本篇文章主要的文字描述基本都是在做代码解释,为了使内容接受度更高,我会尽量描述到代码结构中的每个细节。如果有对此不太了解又很感兴趣的小伙伴可以尝试手动过一遍代码,相信很快很快就可以掌握编辑器开发方面的使用技巧在前篇文章中有对编辑器扩展UI控件方面的一些基础内容做了简单的描述,大概说明了UnityUnity编辑器扩展 UI控件篇。

2022-08-24 16:47:15 2742

原创 Unity编辑器扩展 UI控件篇

Unity引擎内编辑器扩展

2022-07-02 15:32:47 3531

原创 Unity 透视投影矩阵变换的可视化

前言在前面的文章中描述了关于Unity中空间矩阵的转换,相机投影矩阵的意义与正交相机不同,投影相机为了得到近大远小的画面,会根据深度信息做平切面的画面缩放,而这些平切面连续组合起来就组成了相机的视锥空间......

2022-04-19 06:00:00 5172 1

原创 游戏程序设计中有趣的绕轴旋转

前言对于物体的变化中,旋转是最复杂的变化物体绕点旋转从数学的角度出发,在二维坐标系中,某一点围绕另一点发生一定角度的旋转,点位坐标是固定且可以计算的。通过一个简单的图解表述推导出计算公式:在二维坐标中,假设某一点A(x1,y1)围绕某一固定点B(x2,y2)旋转一定角度θ,则该点的新坐标B(x,y),可以从中看出:如果感兴趣,可以通过一些高中知识来推出求B坐标的过程。本文章侧重于程序设计,求解公式为:x=(x1−x2)cosθ−(y1−y2)sinθ+x2 x = (x_1 - x

2022-03-21 10:10:21 4088 1

原创 Unity 与 UE4 双引擎版本四叉树的创建与可视化

Unity与UE4双引擎时代已经到来了

2022-02-08 15:48:06 3320 1

原创 Unity 柏林噪声

关于柏林噪声:先粘贴关于百度百科的一段话:柏林噪声 (Perlin noise )指由Ken Perlin发明的自然噪声生成算法 。一个噪声函数基本上是一个种子随机发生器。它需要一个整数作为参数,然后根据这个参数返回一个随机数。如果两次都传同一个参数进来,它就会产生两次相同的数。这条规律非常重要,否则柏林函数只是生成一堆垃圾但是百度百科中没有更多关于柏林噪声具体实现的步骤过程,而在维基百科有介绍到柏林噪声生成的大概的步骤:整个过程简要的分为三部分:选取随机点,给定随机值给定点位的梯度(用插值

2022-01-22 13:34:46 10049 11

原创 Unity 不同空间坐标转换中的矩阵应用

前言实际开发中,Unity已经为开发者封装好一些坐标转换的方法,使用起来是比较方便的,但是对于理解而言就比较复杂了,本篇文章通过模拟的方式来简单的了解一下Unity的矩阵坐标变换的思路获取物体的相对坐标在开始前先做一些准备工作,创建两个空物体分别命名为centerPos与targetPos,接下来所执行的操作就可以理解为求targetPos相对于centerPos的本地坐标系下的坐标,即此时centerPos为坐标原点,来求出targetPos在该坐标系下的坐标位置为了便于观察,通过Gizmos绘制

2022-01-05 06:00:00 5814 3

原创 Unity游戏画面参数解析与应用:垂直同步、动态模糊、抗锯齿

前言大学同学在群里分享了一张关于原神画面设置的图片:其中一项垂直同步默认是打开的,但是似乎不是那么合理,所以在这里描述一下关于垂直同步的一些知识:一、 垂直同步:在Unity中,如果想要开启垂直同步,可以在Quality下面找到Vsync Count,而关于其对应的三个选项分别为:Don’t Sync:不需要垂直同步Every V Blank:开启垂直同步Every Second V Blank:每隔一个垂直空白同步也可以直接通过脚本中的API来直接控制:public stati

2021-12-08 16:55:41 7179 9

原创 Unity 贴花效果的实现

前言通过Unity实现贴画效果的方式多种多样,这里介绍一种有官方现成代码的方式,在默写场景下很好用大概实现方式介绍简单的来说就是通过发射一条射线与物体发生碰撞来获取物体的基本的信息,然后提取出碰撞处该物体的UV坐标点,然后进行一个计算得到物体对应贴图的像素信息,然后对这些像素进行一个颜色的替换,最后就可以得到一张贴花效果的贴图这种方式的第一步就是需要通过发射一条射线,然后得到碰撞检测点的信息,这里用到的API为:由于其返回的是一个UV坐标点,我们没有办法直接的去使用,所以需要通过一个坐标的转换,

2021-11-22 12:35:06 5280 1

原创 Unity性能优化 :合批篇

Unity合批小知识前言在在早期Unity中,对于合批的处理手段主要是下面三种:Static BatchingDynamic BatchingGPU Instancing并且对于他们有着严格的使用限制,而在Unity推出SPR后,为了提升合批的范围与效率,提供了新的合批方式SPR Batcher,本篇文章就简单的介绍一下这些合批的技术Draw Call、Batcher、 Sat pass Call在开始了解合批之前,需要理解一些衡量CPU处理渲染速率的参考值Draw CallUn

2021-11-08 16:37:51 8826

原创 Unity 动态网格地图的生成:基于Perlin Noise创建地形

前言:在前面的文章中,设计了一个简单的网格地图生成脚本,但是本身是基于二维坐标来完成的,为了更好的拓展该脚本,同时学习大世界地图加载方案,本文章来做一个三维地图创建加载脚本一、创建三维地图这一步很简单,只需要在本来的脚本上进行Y轴的扩展,这样就可以生成三维的地图,简单的从第一步开始,需要了解一下using System.Collections;using System.Collections.Generic;using UnityEngine;using System;public cl

2021-10-02 17:51:57 7766 4

原创 Unity 性能优化:资源篇

Unity性能优化大的方面来说,通过Unity对于项目的性能优化大概可以分为下面几个部分:分类资源渲染程序项目配置一、资源1、纹理(简单来说就是图片)纹理的资源优化主要集中于下面的几点:纹理大小压缩格式导入设置通常,在游戏运行时,大部分内存都是用在了纹理上,因此你的导入设置非常关键,我们可以在Inspector面板看到图片资源的信息,类似于下面这张图:从性能优化的角度看,纹理道路需要遵循如下的原则:降低最大分辨率采用二次幂压缩格式:制作纹理图集取消勾选Read

2021-09-05 21:11:21 3342 7

原创 基于Unity的A星寻路算法(绝对简单完整版本)

前言在上一篇文章,介绍了网格地图的实现方式,基于该文章,我们来实现一个A星寻路的算法,最终实现的效果为:项目源码已上传Github:AStarNavigate在阅读本篇文章,如果你对于里面提到的一些关于网格地图的创建方式的一些地图不了解的话,可以先阅读了解一下下面的这篇文章:文章链接:Unity 制作一个网格地图生成组件1、简单做一些背景介绍在介绍A星寻路算法前,先介绍另外一种算法:Dijkstra寻路算法,简单的来说是一种A星寻路的基础版。Dijkstra作为一种无启发的寻路算法,

2021-08-12 14:34:16 6331 8

原创 Unity 制作一个网格地图生成组件

前言如果你玩过三国志这种类型的战旗游戏或者模拟城市、部落冲突、海岛奇兵这种模拟经营类的游戏,那么你对网格地图一定不会陌生。在这些游戏中,所有地图场景中的物体都是基于整齐的网格来记录位置等信息。如果你还是感知不到什么是网格地图。俄罗斯方块或者贪吃蛇你一定不会陌生,物体的存在是依托于规整的网格地图而存在的。如果你是小萌新,并且对网格地图感兴趣的话,可以学习本片文章,然后尝试创建自己的游戏吧创建组建出网格的基本单元我们知道网格是由一个个格子组成的,所以第一步需要先创建出一个基本的模板:创建一个脚本命名

2021-08-02 15:12:37 7317 15

原创 Unity 使用Shader Graph实现物体的溶解效果

前言啊咧咧,从大学毕业开始,有一段时间没有更新过博客了,很怀念当初边学习边写博客的时光。今天打开博客网站看着各位大神通过文字来分享自己的技术心得,也手痒了,决定也来一篇!说完上面的话,感觉自己像是大佬一样。嘿嘿,然而本篇文章还是一个小白文,就是Shader Graph的入门知识,一个简单的物体溶解效果,意在帮助新手了解Shader Graph这个工具。效果如下图,如果你感兴趣,可以看看后面的实现方式,然后来试试吧!注:本项目Unity版本为2021.1.12f1c1正文1,配置环境为了使用Sh

2021-07-27 18:43:43 5483 3

原创 C# 委托基础与入门

前言在成熟的项目中,代码结构变复杂时,委托就是必不可少的,通过委托,可以很好的实现对观察者模式的需求处理什么是委托百度百科对于这个词语的解释是把自己的事情交给别人来做,如果同个这个词来对于日常生活的理解确实很复杂,因为把事情交给别人来做的原因很多,很难理解为什么把事情交给别人来做。但是在编程中,这个词就变的单纯许多了,同样可以依据百度百科:百度百科对于委托的解释:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大

2021-06-09 09:53:26 873 1

原创 Unity 协程(Coroutine)原理与用法详解

前言:协程在Unity中是一个很重要的概念,我们知道,在使用Unity进行游戏开发时,一般不考虑多线程,那么如果处理一些并发的需求呢,Unity给我们提供了协程这种方式为啥在Unity中不考虑多线程因为在Unity中,只能在主线程中获取物体的组件、方法关于协程1,什么是协程协程,从字面意义上理解就是协助程序的意思,我们在主任务进行的同时,需要一些分支任务配合工作来达到最终的效果,这就是协程的概念:举个例子,在场景加载的时候,如果你的场景很复杂,那么加载过程就有可能使得画面卡顿,我们不

2021-04-29 16:22:11 54162 27

原创 Unity 有限状态机(FSM)的框架结构

前言NPC是游戏中很重要的一部分,功能复杂,行为智能的NPC可以给玩家带来更加优秀的游戏体验,我们可以通过对NPC的行为模式的设计来理解有限状态机而对于游戏开发者而言,要实现一个功能完备,逻辑清晰的AI状态图可不是一件简单的事情,如果没有前期的完备的设计,以及正确的编程方法,会在开发过程中产生很多难以解决的问题下面看一个案例:在游戏开发过程中,你想要实现一个NPC的一些功能,比如静止与攻击,当玩家靠近NPC,NPC就会攻击玩家,编写一段逻辑代码来实现这样的一个效果:if(玩家靠近) NPC攻

2021-04-24 11:19:03 4939 2

原创 Unity 将Sprite打包进图集

前言:打包图集是一个很简单的过程,但是如果没有这样的经验,可能不知道如何下手本博客大概说一下打包流程,以及一些基本原理1、为什么要打包图集首先要了解一点,在UGUI中即使你什么都不干,在项目打包时,Unity也会自动将你的一些小图片资源合在一张大图里面,也就是合成一张图集,但是这种默认的方式,会产生大量的Draw Call,对于性能消耗比较大而NGUI则是开发者必须要将图片资源打包成图集,然后才能使用这些图片资源因此无论是UGUI还是NGUI,掌握图集的打包都是非常重要的2、打包开始前在合成

2021-04-23 11:26:46 9135 11

原创 C# 数据容器详解:Array、List、Dictionary、LinkedList、Queue、Stack

ArrayList关于ArrayList的原理:核心是数组:可以动态扩容:通过创建一个更大的新数组,来将原来的数组转移到新数组插入删除方便存储的是对象: 需要装箱、拆箱操作 是不安全类型List核心是数组: 可以动态扩容:同样是创建新的更大数组来迁移数据 使用泛型来实现对装箱拆箱操作的避免内存优化 对于List可以规定长度,来避免 动态扩容操作,这样就可以避免新的内存空间的消耗HashTable键值对形式: ton...

2021-04-20 22:38:08 1993 3

原创 Unity 渲染流水线:CPU与GPU合作创造的艺术

整体来讲应用程序阶段:由CPU来处理,首先获取场景中的模型信息,根据一定规则(视锥剔除、遮罩剔除)剔除那些不需要渲染的物体,然后将需要渲染的模型的顶点数据以及渲染模式,光照信息等等发给GPU,这些信息被成为Draw Call ,一般来说一个独立的模型会产生一个Draw Call,但是如果经过一些特殊的处理,比如所动态合批,静态合批等等操作,就会降低Draw Call几何阶段光栅化阶段...

2021-04-16 22:39:08 1394

原创 Unity 相机参数详解:多相机混合、小地图实现

前言在Unity中,相机是必不可少的一个对象,我们创建一个项目,无论是2D项目还是3D项目,都会默认创建一个MainCamera对象,这就说明了其重要性,本片博客不从参数讲起,而从功能性上来理解Unity中Camera组件的各种阐述的含义及用法正片:1,多相机混合首先第一个就是多相机混合,虽然不常用,但是涉及的参数比较多,可以一次性的介绍很多,说的相机混合要了解下面的参数:Clear Flags:确定清除相机的哪一部分,主要是天空盒,这样在多相机混合时不会遮挡其他相机的画面Culling Ma

2021-04-05 17:58:16 3993 1

原创 Unity 资源加载的两种方式:Resources和AssetBundle最详细的解析

前言:在游戏开发学习初期,游戏体量较小,如果游戏场景需要Asset中的资源,我们可能会通过拖动的方式,将其添加到游戏场景中。而到了实际工作中,会发现再这样做就会使得各种拖动的资源非常复杂,难以查找与维护关于资源:在Unity中,在Asset文件下的文件都可以称为游戏的资源,例如预制体、模型、材质、纹理、音频、视频、数据文档、场景等等为了避免这样的情况,Unity游戏引擎为我们提供了很多种加载Asset中资源的方式,而我们最常用的主要是Resources和AssetBundle两种方式资源加

2021-04-03 21:01:03 23733 1

原创 Unity 升级项目到Urp(通用渲染管线)以及画面后处理

前言:Urp是一种SRP(可编程渲染管线),相比于默认渲染管线,在提升画面表现的同时,也可以提升游戏的性能表现开始升级前准备在开始之前,需要你备份你的项目,确保在升级过程中出现问题还有挽回的空间关于项目的备份:可以打包成Package来导出项目在你做好备份后,就可以正式开始项目的升级工作,我们可以在导航栏中的Window选项中找到Package Manager,点击进去,找到Universal RP,然后点击安装即可完成安装将默认渲染管线替换为Urp渲染管线导入Urp插件后,在Pr

2021-03-30 15:24:37 47876 11

原创 Unity 帧动画

前言动画在游戏中是很重要的一环,通过动画,可以体现出当前角色的行为状态,带给玩家更加丰富的游戏体验Unity中的动画具体有三种:骨骼动画:3D角色物体最常用的动画关节动画:序列帧动画:制作流程:首先需要导入素材,即一组图片:可以将其理解为一组幻灯片,通过快速的播放这些图片,来获取一个动画,在完成图片的导入后,需要调整其Texture Type,使其可以作为帧动画的素材来使用,...

2021-03-20 13:36:09 5836 2

原创 Unity 事件管理器

对于继承于MonoBehaviour的脚本:using System.Collections;using System.Collections.Generic;using UnityEngine;public class MainTest : MonoBehaviour{ //声明单例模式 static MainTest _instance; private void Awake() { if (_instance != null)

2021-03-18 15:58:09 2214 6

原创 Unity 第三人称角色控制器:动画混合树、Cinemachine等功能或插件的使用

前言:无论是RPG、ACT、AVG还是TPS游戏,都有大量的以第三人称为人物视角的游戏作品,尤其时TPS,就是以第三人称为特点而命名的。而对于第三人称而言,人物角色的所有状态全部暴露在玩家的视角之下,关于角色的所有的动画、逻辑、相机表现都要能够让玩家感受到最完美的体验1,角色模型导入:在开始使用Unity设计开发第三人称游戏之前,我们需要先获得合适的角色模型。Unity支持多种格式的模型,而当我们使用具有动画的模型时,往往选择fbx格式的模型选择好模型后,就可以将模型导入到Unity中,然后我们需

2021-03-09 11:25:41 5023 5

原创 C# 高级特性:泛型详解

概念理解:百度百科 :泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。C#官方文档:泛型是为所存储或使用的一个或多个类型具有占位符(类型形参)的类、结构、接口和方法。 泛型集合类可以将类型形参用作其存储的对象类型的占位符;类型形参呈现为其字段的类型

2021-03-03 19:26:49 1034 1

原创 Unity 性能优化:降同屏Tris、动态合批降DC、遮罩剔除、渲染路径

前言:元宵节快到了,想要做一个上千盏孔明灯的场景,而当完成后运行,发现场景极其卡顿,尝试减少孔明灯数量,而实际情况并没有改善,于是进行分析,发现GPU性能存在瓶颈问题分析由于场景是用的一套低模的资源包,应该不会出现问题,产生卡顿的原因,猜测是实例化出灯笼的模型出现了问题,首先通过scene窗口看了一下灯笼模型的三角面,确实,是一个高精度模型,三角面密密麻麻:为了验证这样的想法,通过脚本来获取该物体的三角面数,新建一个场景,并在场景中只保留灯笼这一个模型,编写一个脚本获取所有物体的三角面数,并显示在

2021-02-23 18:28:59 5997 7

原创 Unity 背包系统的完整实现(基于MVC框架思想)

前言:背包系统是游戏中非常重要的元素,几乎每一款游戏都有背包系统,我们使用背包系统可以完成装备栏的数据管理,商店物体的数据管理等等一系列的功能本次案例是基于数据本地存储的方式设计的背包系统,首先在数据管理方面,使用ScriptableObject类来实创建数据仓库,可以保存在游戏系统中,重新开始后依旧可以再次加载出来该数据UI端一、UI搭建创建一个Panel作为背包系统中所有物体的父元素,并为其更换一个背景图片,这样可以使得物体有容纳的空间,能够使得物体更加序列化,更规整:接下来需要对Main

2021-02-06 20:35:20 24034 54

原创 Unity Navigation寻路系统并画出指引线

前言寻路系统是游戏中很常用的一个功能,本案例通过Navigation实现寻路系统的同时使用Line Renderer组件标识出指示线,最终完成效果图为:实现过程1,利用Navigation烘培场景为了实现自动寻路的功能,首先需要对场景进行基本的设置,以便让系统识别哪些判断哪些是可运动区域,而哪些又是不可运动区域,Navigation导航系统的判断条件是基于静态物体进行的,如果想对于动态物体进行判断,则需要添加响应的组件。要将物体设为静态,首先在场景中选中静止地面和障碍物,在Unity编辑器Ins

2021-02-02 15:37:55 4025 7

原创 Unity网络编程四:客户端与服务端进行数据传输(Unity登录系统的实现)

前言:我们在完成服务端的搭建与客户端连接客户端的功能后,需要实现两者之间的通信功能C#官方文档给了我们这样一个案例

2021-01-29 18:52:35 4801 8

原创 Unity网络编程三:客户端连接服务器端

今天开始进行客户端对于服务器端的连接访问,而关于服务器的搭建可以看Unity网络编程一客户端连接服务器1,首先创建一个客户端连接脚本,在脚本中连接服务器连接服务器,同样需要使用Socket来设计连接方式:2,在脚本中首先需要使用构造方法获取IP地址和端口3,然后定义一个方法,通过Socket中的Connect()方法来连接到指定的服务器端using System.Collections;using System.Collections.Generic;using System.Net;u.

2021-01-25 13:36:57 3037 15

原创 Unity网络编程二 : 服务器端连接数据库(C#连接MySQL)

服务端需要连接数据库才能与客户端进行数据的交互,本案例使用Mysql作为连接数据库开发环境:VS 2019MySQL.Net一、连接MySQL环境配置为了连接MySQL,需要配置文件MySql.Data.dll,如果使用的是Vs2019,可以直接下载使用,不需要进行自己下载配置, 具体配置方式为:首先直接使用其方法MySqlConnection,在出现错误提示后Alt+Enter显示可能修补的程序,然后选择安装MySQL.Data,VS2019会自动下载安装当然也可以自行手动添.

2021-01-21 11:19:29 2007 19

原创 Unity网络编程一: 基于Socket搭建一个服务器

为了实现Unity与服务器进行数据传输,需要在本地搭建一个服务器,作为服务器端来实现数据的接受与发送,本次使用Socket来实现开发环境:VS 2019.NetUnity2019;一、新建一个项目打开Vs2019新建一个项目,随便选择控制台应用即可,然后对项目进行命名和保存项目路径,这样就完成了一个基本项目的创建。二、新建一个类作为服务器创建启动首先创建一个类CreateServer作为服务器启动类要使用Socket首先需要引入两个类:using System.Net;us.

2021-01-20 11:29:07 3626 3

原创 Unity 将数据转换为Json格式

Json数据在数据网络传输时是很重要的一部分,所以对于数据序列化为Json数据是很重要的一环使用JsonUtility转换为Json数据格式为了与Json数据键值对格式相对应,首先需要使用类来将数据封起来,然后使用ToJson()方法转换为对应格式:/// <summary>/// 将数据转换封装为一个类/// </summary>public class Date{ public string name; public string passwor.

2021-01-17 16:19:45 1964 1

原创 Java 连接数据库

前言:做后端开发,往往是离不开数据库的,就算你不了解数据库, 也要懂一些数据库连接的东西,本案例的开发环境为MySQL+Idea一、导入数据库驱动要连接数据,首先需要导入数据库驱动,对于Java连接来说,我们直接在官网下载对应的jar包然后导入到Idea中即可,具体的步骤为:1,Mysql官网下载驱动:点击该链接:MySQL驱动进入官网下载驱动的页面,然后我们按照如图点击对应的按钮选择我们需要的Platform Independent:接下来弹出的两个下载选项,Windows系统选择zip压

2021-01-04 17:56:57 574 2

原创 Java 类的概念与使用

作为一门面向对象的语言,对于类的理解是很重要的。那么什么是类呢?作用是什么以及有什么特性呢?一、什么是类类可以看成是对于对象在编程里的描述,程序员使用类来实现一个对象的概念。类是一个模板,描述一类对象的行为和状态。以人为一个对象,对象有吃饭睡觉的行为以及身高体重的状态,而在编程语言中,我们将吃饭睡觉这样的行为成为类的方法,而身高体重的状态成为类的属性。总的来说,类就是编程语言对于面向对象概念的实现二、类的实现方式我们可以使用 :修饰符+Class+类名 +{}来创建一个类,并可以在类.

2021-01-02 14:23:09 757 1

原创 Java 修饰符

在Java中,关于修饰符可以分为访问修饰符与非访问修饰符两种一、访问修饰符通过访问修饰符,我们可以对不同的类或者方法属性来对其权限进行一定的限制。在Java中,访问修饰符有四种:public :公共成员修饰符,对所有的类都可见private:私有成员修饰符,在同一类中可见protected :保护成员修饰符,对同一包中的类和之类可见default :默认,在同一包内可见访问修饰符可以对类、属性、方法进行修饰,不过对其的使用是有一定的限制的,需要在正确的条件下使用正确的修饰符,这样才能帮助我

2020-12-30 19:58:27 157 1

空空如也

空空如也

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

TA关注的人

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