自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (3)
  • 收藏
  • 关注

原创 Low Poly Epic City的脚本研究日志(2)(2022.3.1)

文章目录前言今天研究的内容:CarBehaviorTrafficLightControl接下来的计划:前言研究一下Low Poly Epic City的CarBehavior和TrafficLight怎么做的。今天研究的内容:CarBehavior首先,每个车辆都打上了"Car"标签,并且在前方放置一个触发器用于探测环境。Low Poly Epic City使用在每个单元放置PathFinding,而我采用PathRequestManager为每个单元提供路径。这里面部分功能与我的Unit

2022-03-01 23:29:24 449

原创 谈谈游戏动画的一些基础知识

文章目录前言3D动画的基本知识前言开摸!3D动画的基本知识动画在游戏中是Gameplay和玩家审美的重要因素,不可不品尝。 - - -

2022-02-28 21:28:47 3433

原创 Low Poly Epic City的脚本研究日志(1)(2022.2.24-26)

文章目录前言今天实现的内容:Path脚本Tile脚本PathFinding接下来的计划:前言今天(2022.2.24)也算是发生了件大事。OK,It’s Time for Code!今天实现的内容:Path脚本Path定义了若干transform点组成的队列,描述Tile中的路径。Path还指定了与其连接的下一个Path,可能有多个Path于其相连,比如十字路口处车辆有三个方向可以开。就有一个路径和三个路径相连。甚至还指定了载具的运动速度,不过我最好把这个放到每种载具中指定。Tile脚本

2022-02-26 19:25:02 546

原创 Low Poly Epic City的初步研究日志(2022.2.22)

文章目录前言今天实现的内容:寻路算法PathTiles交通灯交通灯的控制交通灯脚本公路载具接下来的计划:前言2022.2.22星期二,我已经将该项目转变为Unity引擎开发。当前进度十分滞后,恐怕有完不成的情况。最大的问题是,无法实现交通系统。唯一的值得欣慰的是,我找到一个Unity的付费城市交通场景项目Low Poly Epic City。花了钱买下来。网格A*算法寻路,有交通系统,我需要好好研究一下该项目。目前项目,已实现车辆控制器,能自动(向前)行驶至给定目标点。今天实现的内容:寻路算法使

2022-02-23 00:24:04 2330

原创 谈谈游戏AI的一些基础知识

文章目录前言AI和游戏AI在Gameplay中的模块移动和寻路移动到达目的地的判断寻路决策制定AI的战术和策略前言继续抽空学一学公司的课程,最近可真是懒得不行。AI和游戏AI,人工智能,这几年很火的概念,简单来说,人工智能就是让计算机能够完成人类/动物的思维。人工智能也许比你想象的更广范,早期人工智能,称为专家系统,就是一种穷举大法,也算是人工智能。在游戏中,我们也大量使用人工智能,人工智能运用于游戏性提升,游戏内容创作(美术),玩家数据分析。运用人工智能也会带来成本上升,以及有可能带来游玩时的不

2022-02-15 22:18:02 3279

原创 如何使用VS的断点查看两段代码之间间隔了多少帧

如何使用断点查看两段代码之间的间隔了多少帧有一次要做一个正在加入房间的提示窗,我一开始在点击房间时显示弹窗,在一个加入房间结束的回调中关闭显示,看似合理,但是实际上弹窗并没有显示出来。后来有大佬教了一个办法,VS的断点勾选Actions,就能在每次触发断点时在Output窗口打印一串自定义的消息。如果在游戏项目的Tick(Update)中使用这样的断点,勾选Continue code execution,这样即使运行到断点也不会暂停。你就可以知道在两段代码之间执行了多少次tick。不好意思,只能用别

2022-01-13 17:43:03 2361

原创 工厂模式、回调、委托(学习笔记)

文章目录前言前言感觉自己水平不足,腾出时间了解一下工厂模式 - - - -

2022-01-12 11:28:49 276

原创 谈谈Gameplay,以及UE4的Gameplay框架

文章目录前言介绍GameplayUE4 GameplayUE4 Gameplay框架介绍重要框架类前言一直说自己是Gameplay程序员,那么今天来谈一下Gameplay,尤其是UE4的Gameplay。介绍Gameplay什么是Gameplay,Gameplay就是使得游戏好玩的游戏交互。好玩是个很抽象的概念,但是游戏的操作手感,游戏设计,输入等,都可以算到好玩不好玩上。于是就有了Gameplay的3C概念,也就是Character、Camera、Control。Character:表现游戏世

2021-12-28 16:41:48 7863 2

原创 C++中的那些坑

文章目录前言笔记:问题大总结变量(初始化)大总结前言学习一下公司大佬的C++课程,内容如题。笔记:问题大总结问题1. 不初始化变量可能引起,在release下出现crash或死锁但是在Debug下正常运行,已经其它不可预测的运行结果,很难跟踪,所有变量最好在声明时就初始化,而且变量最好是需要使用时才声明,不要提前声明。问题2. 程序只在Release下会崩溃或死锁,除了前面提到的变量为初始化,还有可能是因为: 多线程竞争导致程序未按预期运行,出现资源无法满足(不理解)。 由于性能的提高导致

2021-12-13 12:50:43 934

原创 A*寻路实例项目实践笔记

好久不见!今天使用Unity照着Sebastian Lague大佬的视频做一个A寻路算法的实例项目,包括A寻路的介绍,网格系统的创建,以及一些实际使用案例。

2021-11-21 22:41:01 3748 3

原创 随手研究一个项目里的坦克履带——项目开发日志(2021.11.15)

文章目录前言笔记:PathFollowingComponentAIController红绿灯系统前言这几周我在一个新的项目中做实现,正好这个项目中有AI车辆,拿来研究一下。我也不透露项目具体内容,应该不会被告吧。笔记:PathFollowingComponentUE4有这样一个自带的组件,相当完善。不过似乎本项目并未使用?AIController看得出来这个游戏的车辆AI很简单,说不定不比我的跟随样条线复杂。自制VelicleController直接继承自自制的AIController,没有添

2021-11-15 14:13:28 2942

原创 游戏AI车辆(Auto Mobile City)项目开发日志(2021.10.18)

文章目录前言今天实现的内容:样条线控制的车辆AI原型PID控制器红绿灯系统接下来的计划:前言这是一个ai车辆项目,将包含几种不同行为模式的AI车辆在城市交通场景中运行,你可以理解我我计划做出GTA等城市场景开放世界游戏中的NPC车辆及交通,这个项目将成为本人的毕设及实习training。今天实现的内容:准确来说,这个项目8月我就开始上手了,但是当时没有写日志,今天的日志就记录一下以前的成果。样条线控制的车辆AI原型我最简单的构思,就是通过样条线将道路路径描述出来,AI车辆要能开走只需要跟随样条线

2021-10-18 16:21:07 1784

原创 Unity Compute Shader入门(大量对象随机赋值颜色实验)

这里写自定义目录标题前言ComputeShader的简单介绍ComputeShader在Editor中Unity Compute Shader代码原理简介CPU对照组运用Compute Shader解决问题效果前言好久不见!今天使用Unity Compute Shader来实现一个大量正方体的随机颜色赋值,作为我的Unity ComputeShader入门练习。ComputeShader的简单介绍Compute Shader用来将项目中某些大量且简单的算法交给GPU赋值,以此减小CPU的运算负荷。总

2021-09-22 17:29:57 1257

原创 Git入门(笔记)

文章目录前言Git简介为何选择Git如何使用Git为什么一定要学命令行Git BASH配置GitGit级别第一次使用Git最后前言git是目前最流行的分布式(Distributed)版本控制系统。学习一下以便工作之需。相关视频链接:Git Tutorial for Beginners: Learn Git in 1 HourGit简介为何选择Gitgit是目前最流行的分布式(Distributed)版本控制系统。免费,开源,传输速度超快,并且可以拓展,同时git开分支和合并分支都很简单。几乎

2021-07-19 16:48:08 192

原创 Python入门(笔记)

文章目录前言环境配置下载安装VS Code配置基本语法变量用户输入类型转换字符串格式化字符串字符串方法注:通用的函数叫函数,属于某个类的函数叫方法算术运算函数判断循环数据结构及API表数值APILua语言的面向对象方案复制表方案“成员函数”“构造函数”和“成员变量”“继承”函数闭包方案“类”的设计“继承”最后前言Python快速入门的个人笔记。视频链接:2021国外最新 Python 教程 6 小时入门,目前最好的python教程 (含中文翻译)6小时环境配置下载到python.org下载最

2021-06-19 19:05:38 283

原创 黑魂复刻游戏的玩家控制器(锁定状态)——Unity随手记(2021.6.7)

文章目录今天实现的内容:新增锁定输入锁定功能的代码逻辑BUG以及缺陷:值得注意的:今天实现的内容:新增锁定输入为输入模块添加锁定键和锁定信号,更新信号。 --- IPlayerInput public bool lockOn; //锁定信号 --- JoystickInput public MyButton buttonLockOn = new MyButton(); //锁定键 // Update is called once per frame void U

2021-06-07 16:35:42 1531 6

原创 黑魂复刻游戏的按键长按功能——Unity随手记(2021.5.30)

文章目录今天实现的内容:计时器类使用计时器类实现按键双击判断BUG以及缺陷:值得注意的:今天实现的内容:计时器类计时器类,估计是个游戏都用得上。我们将专门实现一个计时器类,马上就会在实现按钮长按判断和双击判断中用上。当时,设置计时器的duration,执行Go方法,计时器状态将在elapsedTime >= duration时从RUN变为FINISHED,计时器代码如下:using System.Collections;using System.Collections.Generic;u

2021-05-30 15:24:17 293 5

原创 黑魂复刻游戏的计时器类及按键双击功能——Unity随手记(2021.5.29)

文章目录今天实现的内容:计时器类使用计时器类制作按键双击判断BUG以及缺陷:值得注意的:今天实现的内容:计时器类计时器类,估计是个游戏都用得上。我们将专门实现一个计时器类,马上就会在实现按钮长按判断和双击判断中用上。当时,设置计时器的duration,执行Go方法,计时器状态将在elapsedTime >= duration时从RUN变为FINISHED,计时器代码如下:using System.Collections;using System.Collections.Generic;u

2021-05-29 16:13:55 203 4

原创 黑魂复刻游戏的自制按钮类——Unity随手记(2021.5.29)

文章目录今天实现的内容:自制按钮类逻辑简介运用自制按钮类BUG以及缺陷:值得注意的:今天实现的内容:自制按钮类今天我们将实现我们自己的按钮类。按钮类的具体功能是提供按压,刚刚按下,刚刚松开的信号。我知道Unity提供了相应的功能,但我觉得可以学习一下老师的方法,假设Unity只有GetButton,就可以通过这个方法实现OnPressed和OnReleased。代码如下:using System.Collections;using System.Collections.Generic;usi

2021-05-29 14:33:07 216

原创 黑魂复刻游戏的控制器(盾牌、防御的IK方案以及动画状态方案)——Unity随手记(2021.5.11)

文章目录今天实现的内容:添加shieldHandle防御动画状态BUG以及缺陷:值得注意的:今天实现的内容:添加shieldHandle在人物模型合适的位置添加shieldHandle作为盾牌的位置,如图所示。防御动画状态一个好的动画很重要,mixamo上下载的免费动画真的丑哭我,现在配上盾以后还穿模了。所以在这里我们可以用代码小修一下动画的瑕疵。当然,最好的解决方案依旧是麻烦美术大佬们直接修动画。BUG以及缺陷:值得注意的:...

2021-05-13 17:05:44 451 9

原创 黑魂复刻游戏的摄像机抖动问题——Unity随手记(2021.5.11)

文章目录前言今天实现的内容:问题产生的原因通过完全固定摄像机每帧的指向解决问题可能出现的运用RootMotion动画晃动问题BUG以及缺陷:值得注意的:前言之前制作摄像机时,我们曾经想使用SmoothDamp来实现摄像机延迟移动(摄像机博客的链接),但是造成了摄像机旋转时的抖动问题,今天的博客就是为了解决这个问题。今天实现的内容:问题产生的原因在我们的代码中,摄像机位移使用了SmoothDamp,但是旋转却是直接欧拉角赋值,这导致了摄影机位置还没有调整完,旋转就已经到位了。想象一下这个过程,摄像机

2021-05-11 14:00:34 330 4

原创 黑魂复刻游戏的手柄输入支持——Unity随手记(2021.5.10)

文章目录今天实现的内容:BUG以及缺陷:值得注意的:今天实现的内容:BUG以及缺陷:值得注意的:

2021-05-10 15:01:56 435 1

原创 C++数据结构实验三 字符串和数

实验内容1.定义任意两个字符串,完成以下操作:(1)编写求字符串长度函数,显示该字符串长度;(2)编写字符串拼接函数,将该字符串与键盘输入的另一字符串拼接,并显示拼接结果;(3)编写比较大小函数,比较两字符串大小,并显示比较结果。2.实现奇数阶幻方。在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行的几个数之和都相等,具有这种性质的图表,称为“幻方”。按目前填写幻方的方法,是把幻方分成了三类,即奇数阶幻方、双偶阶幻方、单偶阶幻方。奇数阶幻方的方法比较简单,这里只考查奇数阶幻方的程序。

2021-05-06 19:25:00 1346

原创 黑魂复刻游戏的玩家控制器(镜像动画实现另一只手的攻击)——Unity随手记(2021.5.5)

文章目录今天实现的内容:镜像动画BUG以及缺陷:值得注意的:今天实现的内容:镜像动画黑魂游戏里,不会限制你用那只手拿武器,而我们的项目中,目前还只有右手攻击,接下来我们将通过镜像动画实现左手攻击。选中动画节点,可以看到检视窗口中有一个Mirror选项,勾选Mirror我们的动画就会镜像反转。我们希望能通过脚本来控制它。如果我们不勾选Mirror,而是勾选它后面的Parameter,我们就可以使用动画机参数(要是bool类型的)来控制它了,我们可以很轻松的在代码中控制动画机参数(anim.Set

2021-05-05 13:36:22 155

原创 黑魂复刻游戏的玩家控制器(播放攻击动画时的位移)——Unity随手记(2021.5.4)

文章目录今天实现的内容:通过代码运用动画自带的Root Motion按照之前的办法自制位移BUG以及缺陷:值得注意的:今天实现的内容:通过代码运用动画自带的Root Motion在这篇博客之前,攻击时是不会出现位移的,因为我们没有运用动画自带的Root Motion。为了更好的动画效果,我们接下来将会运用到Root Motion。上图中,红色的标识指示了动画的Root Motion量(具体我也不是太懂,反正就是个量),当我们运用Root Motion时,系统会将Root Motion量套用到游戏对

2021-05-04 15:39:26 708 8

原创 黑魂复刻游戏的玩家控制器(连续攻击及优化)——Unity随手记(2021.4.30)

文章目录今天实现的内容:新增攻击状态BBUG以及缺陷:值得注意的:今天实现的内容:新增攻击状态B配置好我们的新动画,将其加入动画机。BUG以及缺陷:值得注意的:

2021-05-02 22:38:27 824 4

原创 黑魂复刻游戏的玩家控制器(攻击的基础实现)——Unity随手记(2021.4.27)

文章目录今天实现的内容:攻击动画层BUG以及缺陷:值得注意的:今天实现的内容:攻击动画层为了加入新的攻击动画,我们要设计一个攻击动画层。BUG以及缺陷:值得注意的:

2021-04-27 14:33:55 247

原创 黑魂复刻游戏的碰撞摩擦问题——Unity随手记(2021.4.27)

文章目录今天实现的内容:BUG以及缺陷:值得注意的:今天实现的内容:BUG以及缺陷:值得注意的:

2021-04-27 14:03:30 580 1

原创 Lua入门(笔记)

文章目录前言一、Lua简介简介网站二、Lua配置Win10配置方案最后前言据说做游戏开发要用到Lua,所以提前学一学。一、Lua简介简介Lua是一款基于C语言开发的编程语言,非常小巧并且适合跨平台开发。由于Lua实在是太过于小巧,以至于其不具备很多基本的功能,这些基本功能需要C/C++库来帮忙实现。可以看到,Lua的源代码其实就是C语言写的,所以对于Lua开发来说,实际上是通过Lua来实现逻辑,而功能由C++提供。由于本质上就是C/C++,所以Lua的运行效率很高。网站从http://

2021-04-21 15:02:01 2202

原创 材质与外观Materials and Appearances(笔记)

文章目录前言一、材质什么是材质课程的最后前言研究不同材质与光照作用产生的外观。一、材质什么是材质由渲染方程中的BRDF决定的,描述光线如何被物体反射的性质。也可以说,材质就是BRDF。上图表示的为漫反射材质。Glossy材质。玻璃/水材质。折射与反射。课程的最后...

2021-04-06 14:15:24 335

原创 黑魂复刻游戏的摄像机控制——Unity随手记(2021.4.3)

文章目录今天实现的内容:鼠标输入摄像机方案设计旋转摄像机时的角色模型控制摄像机延迟移动BUG以及缺陷:值得注意的今天实现的内容:鼠标输入在没有引入手柄操作前,将由鼠标来控制摄像机旋转,首先我们要获取到鼠标输入。public class PlayerInput : MonoBehaviour{ // 摄像机控制轴 public string cameraAxisX; public string cameraAxisY; // 摄像机控制信号 public f

2021-04-03 16:09:50 460 1

原创 黑魂复刻游戏的玩家控制器(后跳、奔跑、翻滚、跳跃的再重新设计)——Unity随手记(2021.4.2)

文章目录今天实现的内容:黑魂游戏中后跳、翻滚、跳跃的键位设计单击和按住的代码实现运用BUG以及缺陷:值得注意的:今天实现的内容:黑魂游戏中后跳、翻滚、跳跃的键位设计在黑魂游戏中,后跳和翻滚是由一个键实现的,在站立不动时,按下(哪怕你是按住)该键会后跳。移动时单击该键会翻滚,按住该键时移动会奔跑。奔跑时按下跳跃键才能跳跃。最大的问题就是要区分同一个按键的单击和按住,我们将采用的方案为通过计算按下按键的时间来判断到底是按住了还是单击。而在键盘上,跳跃和后跳翻滚奔跑居然都是一个键(默认space),通过奔

2021-04-02 12:50:04 436

原创 黑魂复刻游戏的玩家控制器(后跳及动画控制的重新设计)——Unity随手记(2021.4.1)

文章目录今天实现的内容:动画控制的重新设计后跳动画的加入后跳冲量BUG以及缺陷:值得注意的:今天实现的内容:动画控制的重新设计我们将彻底取消跳跃信号,改为使用与速度相关的forward参数来判断当前应该转换到哪个动画。现在jump已经不再需要,可以删除了,也就不需要在代码中触发了,同时也就不用Clear Signal了。后跳动画的加入在黑魂游戏中,在原地站住不动时按下翻滚键,玩家会做出后跳的动作。我们加入这个新的动作。当forward小于0.1时,按下roll键会进行后跳。现在,gro

2021-04-01 19:40:50 247

原创 黑魂复刻游戏的玩家控制器(翻滚及跳跃的重新设计)——Unity随手记(2021.3.31)

文章目录今天实现的内容:翻滚和跳跃的重新设计翻滚动画及触发逻辑翻滚的向前冲量跳跃并向前翻滚BUG以及缺陷:值得注意的:今天实现的内容:翻滚和跳跃的重新设计按照黑魂游戏的设计,跳跃其实只有在跑起来时才能起跳,并且伴随翻滚动作,也就是说我们之前设计的主动向前跳跃的功能在黑魂游戏里是没有的,我们的设计要改。现在的设计是将跳跃键替换为翻滚键,让翻滚取代跳跃,并且只有跑起来时按下翻滚键才能跳起来,并且在落地时会进行翻滚。翻滚动画及触发逻辑这是一个前滚翻的动画,需要将动画的Y轴位移也bake into po

2021-03-31 17:11:11 511

原创 黑魂复刻游戏的玩家控制器(降落、落地检测)——Unity随手记(2021.3.30)

文章目录今天实现的内容:加入降落动画落地检测的实现及相关动画运用落地检测器优化失足掉落动画的优化及改进BUG以及缺陷:值得注意的:今天实现的内容:加入降落动画降落发生在跳跃之后,所以降落动画要紧接着跳跃动画播放,动画机如下。这两条Transition都has exit time,并且jump到fall的优先级高于jump到ground,因为目前为止这两个转换都没有条件。在图示位置调整优先级。落地检测的实现及相关动画运用要实现落地检测,需要使用Physics.Overlap里的东西,使用Ph

2021-03-30 17:36:44 657

原创 黑魂复刻游戏的玩家控制器(跳跃)——Unity随手记(2021.3.29)

文章目录今天实现的内容:跳跃信号跳跃动画的应用跳跃时锁死Input跳跃冲量BUG以及缺陷:值得注意的:今天实现的内容:跳跃信号要实现跳跃,首先要实现跳跃的输入。跳跃信号是按下的当场触发的一次性触发控制(Trigger Once Signal)。public class PlayerInput : MonoBehaviour{ ... // 一次性信号 public bool jump; //跳跃信号 public bool lastJump; //记录上一次的jump信号 用

2021-03-29 15:28:57 256

原创 黑魂复刻游戏的玩家控制器(基础移动,动画实现及优化)——Unity随手记(2021.3.15)

文章目录今天实现的内容:动画机设计理念动画机的运用及模型旋转玩家角色的位移爬坡测试跑步BUG以及缺陷:值得注意的:今天实现的内容:动画机设计理念要我说,动画机真的是老生常谈的东西了。做了好几次了,目前也就是将角色的地面动画做进去。设计理念就是使用混合树ground将地面移动动画统一管理起来。动画机的运用及模型旋转要运用动画机,需要将动画机和输入模块串接起来。所以我们需要新的脚本,没错,PlayerController。同样的,顺手解决角色的旋转功能。using System.Collecti

2021-03-29 12:30:59 385

原创 设计模式:单例模式(笔记)

文章目录前言单例模式的定义单例模式的用途单例模式的实现前言学习视频链接:五分钟学设计模式.01.单例模式,文章中的部分图片来自该视频教程。单例模式的定义确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。既然只能有一个实例:这个类的构造函数一定是删除的或private这个实例还需要是当前类的静态成员变量为了将这个实例提供给整个系统,我们还要实现一个静态的方法来提供这个实例该实例只能在类的内部实例化单例模式的用途单例模式的主要作用是确保一个类只能有一个实例存在,那么这个模式

2021-03-22 21:36:05 161

原创 Unity AssetBundle,AB包(学习笔记)

文章目录前言AB包的概念及作用生成AB包前言为了实习,紧急学习一下AB包的相关知识。魂类项目在做了。学习视频链接: 【唐老狮】Unity热更新之AssetBundle,文章中的部分图片来自该视频教程。AB包的概念及作用做游戏需要用到资源,AB包就是Unity针对不同平台(安卓,IOS,PC)的统一资源压缩包。AB包能存储除了C#脚本之外的几乎所有Unity资产(模型,贴图,预制体,材质,音效)。AB包相对于Resources文件夹这一套资源管理方案,拥有更好的资源管理及资源读取办法,能够压缩资源

2021-03-22 16:03:59 1166

原创 光线追踪Ray Tracing(4)(笔记)

文章目录前言十、蒙特卡罗积分(Monte Carlo Integration)蒙特卡罗积分是拿来干嘛的蒙特卡罗积分怎么做蒙特卡罗积分的定义十一、回顾Whitted-Style Ray TracingWhitted-Style的内容Whitted-Style的问题十二、使用蒙特卡罗方法解决渲染方程的积分问题一个简单场景的蒙特卡罗解决方案引入间接光照课程的最后前言今天的内容为路径追踪十、蒙特卡罗积分(Monte Carlo Integration)蒙特卡罗积分是拿来干嘛的如果我们要求上图中a到

2021-03-15 13:52:09 299

ATMC Demo1.35

比较满意的版本

2022-03-28

ATMC Demo scene 打出来的第一个版本

建议改名:堵车模拟器

2022-03-27

Xbox_InputManager.preset

Unity Xbox输入预设 自用

2021-05-07

空空如也

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

TA关注的人

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