
Unity精选篇

文章平均质量分 90
Unity游戏和VR开发过程中一些难题,精选知识内容分享
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
TxNet.Ltd.
不积跬步无以至千里,不积小河无以致江海。
展开
-
Unity技术开发干货 - 总目录
总目录欢迎大家来到 passion 的《Unity技术开发干货》开始前博主先列出学习的大纲,同时也供大家学习参考,如果有什么问题,欢迎留言。一.Unity基础:Unity基础-脚本生命周期Unity基础-向量Unity基础-寻路系统Unity基础-物理系统Unity基础-Mecanim动画系统Unity基础-UGUIUnity基础-灯光Unity-UGUI之Event SystemUnity-2018-粒子系统Unity-协程入门Unity-2D物理引擎、铰链、效应器Unity-原创 2021-06-05 21:53:57 · 3406 阅读 · 11 评论 -
Unity之如何实现哔哩哔哩直播弹幕游戏
什么是直播间互动?当我们使用哔哩哔哩进行直播或者观看视频时,我们可以通过接入哔哩哔哩提供的 直播&互动玩法SDK,让直播和视频可以与Unity3D游戏客户端或者游戏服务器进行互动。原创 2025-03-09 23:27:56 · 707 阅读 · 0 评论 -
Unity之一文搞懂Tilemap如何使用
在 Unity 中引入 Tilemap 之前,创建大地图的2D游戏很困难。放置许多 SpriteRender创建、使用和维护您自己的系统从AssetStore购买工具,学习如何使用它们,并使用它们。除非你有一个小游戏或小地图,否则“放置大量 SpriteRender”是不切实际的。“创建、使用和维护自制系统”的方法创建、使用和继续维护的成本很高。“从 AssetStore 购买工具,学习和使用的成本一样很高。现在可以使用 Unity Tilemap 的标准函数高效地创建充满矩形图像的地图。原创 2024-11-05 11:04:38 · 315 阅读 · 0 评论 -
Unity之如何在Linux上部署Dedicated Server专用服务器
我们在使用Mirror,Fishnet或者Unity Netcode开发多人游戏时,一般有三种链接模式,分别是:Host,Server,Client。Host:代表既是客户端又是服务器Server:代表仅是服务器Client:代表仅是客户端当我们仅是服务器是,我们可以把程序打包成Dedicated Server平台,一种无头服务器应用程序,什么是无头服务器呢?就可以理解为没有界面,是一种纯cmd样式的命令行服务器。今天我们就来简单说一下,如何使用Dedicatedted Server。原创 2024-10-24 22:39:50 · 911 阅读 · 0 评论 -
Unity之如何在物体空间中制作马赛克
GrabPass 允许您创建应用马赛克叠加的着色器。如果你想在屏幕空间中应用马赛克,你可以通过使用片段着色器对其进行离散化来实现,但我在尝试将其应用到对象空间时遇到了问题,所以这是一个记录。▼ 原图▼ 画面空间马赛克▼ 物体空间马赛克我的动机是修改 noriben 的LED 面板着色器并创建一个滤镜,使另一面可以在 LCD 上看到。我很满意,因为我能够创建一个漂亮的着色器。▼ 像这样。原创 2024-10-23 09:00:55 · 207 阅读 · 0 评论 -
Unity之如何使用Unity Cloud Build云构建
Unity Cloud Build作为Unity平台的一项强大工具,它允许开发团队通过云端自动构建项目,节省了繁琐的手动构建时间,使开发者能够更专注于创作和创新。Unity Cloud Build不仅支持多种平台的构建,如iOS、Android、Windows和Web,且其灵活的配置选项使得团队能够根据项目需求自定义构建流程。这项服务还支持团队成员之间的协作,及时获取构建结果和反馈,提升了整体开发效率。Unity Cloud Build是一项允许您在Unity 提供的云中自动创建多平台构建的服务。原创 2024-10-21 09:27:11 · 603 阅读 · 0 评论 -
Unity之ShaderGraph 如何实现靠近变色效果的Shader
今天我们来实现一个靠近变颜色的特效Shader它可以用再什么地方呢?我做的是一个VR游戏,我觉得非常有用,当我带着VR头显靠近了边界时,马上就撞到墙了,它可以提醒我。颜色的变化可以让我感受到我距离墙的距离。当然在普通的pc游戏或者手游种,我觉得它也会有很大的用处。好了,废话不多说,先看下效果。原创 2024-10-14 00:17:08 · 216 阅读 · 0 评论 -
Unity之如何使用GameCI进行CI构建
你想自动执行 Unity 测试吗?通过 CI(持续集成),每次将代码更改推送到存储库时都会执行测试,从而更容易及早发现问题和错误。本文介绍GameCI,这是一个 CI 工具,可使用 GithubAction 自动构建和测试 Unity 项目。CI(持续集成)是软件开发过程中的一种实践方法。目的是主要通过使用自动化构建和测试来保持开发软件的质量并简化开发流程。原创 2024-10-10 09:22:13 · 422 阅读 · 0 评论 -
Unity 之如何实现基于OpenAI的ChatGPT的聊天机器人
在当前的技术环境中,人工智能聊天机器人越来越普遍。OpenAI的ChatGPT是一个强大的语言模型,能够生成丰富的人类语言文本。在这篇博客中,我们将探讨如何使用Unity来实现一个基于OpenAI的ChatGPT聊天机器人。原创 2024-09-11 12:41:16 · 713 阅读 · 0 评论 -
Unity之OpenXR如何使用Netcode实现一个多人VR游戏
Netcode for GameObjects 是专为 Unity 构建的高级网络库,可用于抽象网络逻辑。您可以通过网络会话同时向许多玩家发送 GameObjects 和世界数据。借助 Netcode for GameObjects,您可以专注于构建游戏,而无需考虑低级协议和网络框架。Netcode框架的核心特性包括:易于使用:设计上界面,适合各种技能水平的开发者。性能:为实时游戏提供优化的网络传输保证、低延迟和高帧率。客户端服务器架构:支持典型的客户端服务器模型,允许多个玩家同时连接。原创 2024-08-27 13:16:58 · 523 阅读 · 0 评论 -
Unity之Mirror如何实现多人同步游戏一
Mirror是一个出色的开源游戏网络库,可以用来制作局域网多人游戏,最初Mirror诞生于Unity早起的Unet,后来Unity把Unet给弃用了,但是Mirror在官方团队的努力下,一直不停地优化框架,并且承诺永远不收费,并持续优化。Mirror最大特点是,服务器和客户端是一个项目,从而实现最大的生产力,只需使用NetworkBehaviour而不是MonoBehaviour即可:▣ [Server] / [Client]标签用于仅服务器/仅客户端代码。原创 2024-03-25 17:22:56 · 2009 阅读 · 0 评论 -
Unity之XR Interaction Toolkit如何在VR中实现一个可以拖拽的UI
普通的VR项目中,我们常见的UI都是一个3D的UI,放置在场景中的某个位置,方便我们使用射线点击。但是为了更好的体验,我们可能会有跟随头显的UI,或者可拖拽的UI,这样更方便用户去操作。所以我们今天的需求就是:如何基于XR Interaction Toolkit 插件 在VR中使用手柄射线来拖拽UI。原创 2024-02-18 11:58:48 · 1559 阅读 · 2 评论 -
Unity如何实现bHaptics TrackSuit震动衣的SDK接入
TrackSuit是bHaptisc公司旗下的一款震动衣,包括X16,X40等不同型号,是一款尖端的无线高级触觉背心,采用人体工程学设计,具有40个精确的触觉反馈点。通过无缝的跨平台支持和无限制、无滞后的游戏体验,增强您的VR冒险体验。用于PC或者VR游戏中高度还原真实射击触感。原创 2023-10-31 00:37:30 · 596 阅读 · 0 评论 -
Unity如何实现TreeView
最近有一个需求,需要实现一个TreeView的试图显示,开始我一直觉得这么通用的结构,肯定有现成的UI组件或者插件可以使用,结果,找了好久,都没有找到合适的插件,有两个效果差强人意。最后在回家的路上突然灵光一闪,想到了一种简单的实现方式,什么插件都不用,仅使用Unity自带的Button和Layout。不仅可以实现一级树形目录,还能实现二级,三级等等,只要你有需要,都可以自定义实现。原创 2023-09-29 15:06:22 · 1376 阅读 · 0 评论 -
Unity之Photon PUN2开发多人游戏如何实现组队功能
Photon Unity Networking 2 (PUN2) 是一款基于Photon Cloud的Unity多人游戏开发框架。它提供了一系列易于使用的API和工具,使开发者可以快速构建多人戏,并轻松处理多人游戏中的网络同步、房间管理、玩家匹配等问题。我们在查看Pun2的Demo时,会发现Demo中自带了一个简易的PhotonTeam和PhotonTeamsManager,如果我们只希望有一个组队功能,那么其实也够用,但是如果我们希望实现不同队伍的队名,队标,或者积分功能之类的,那么就需要自己扩展了。原创 2023-08-27 18:58:02 · 2047 阅读 · 0 评论 -
Photon之如何解决Photon Server无法在局域网使用的bug
先介绍一下Photon的两个服务器服务:Photon Cloud 是一个完全托管的软件即服务 (SaaS) 解决方案。我们可以完全专注于应用程序客户端,而托管、服务器操作和扩展均由光子官方负责。Photon Server 是一个本地服务器应用程序,我们可以在本地或指定的计算机上运行和托管。我们可以自由配置和设置自己的多人游戏后端。完全可定制和扩展。注意Photon Cloud 本身是基于 Photon Server的。只不过他是有光子帮我们维护,原创 2023-08-02 17:17:55 · 1509 阅读 · 0 评论 -
Unity如何实现Microphone实时录音的频率数据提取
Unity中使用Microphone可以通过麦克风录制AudioClip音频,我们可以通过它实现录音功能,然后可以通过录入的音频数据对音频进行分析,比如音量大小,频率高低,等等。我们今天就来分析一下音频的高音低音。原创 2023-06-10 13:18:48 · 2989 阅读 · 0 评论 -
Unity之Photon PUN2开发多人游戏 如何创建公共道具
Photon Unity Networking 2 (PUN2) 是一款基于Photon Cloud的Unity多人游戏开发框架。它提供了一系列易于使用的API和工具,使开发者可以快速构建多人戏,并轻松处理多人游戏中的网络同步、房间管理、玩家匹配等问题。使用PUN2我们可以快速构建一个多人位置和动画同步的游戏,但是当我们增加一点复杂度,比如多人游戏时,场景中随机出现道具,大家都可以去捡,这就需要场景的公共事件,而不是某一个人的事件同步问题了。原创 2023-05-30 23:47:58 · 924 阅读 · 1 评论 -
Unity之如何接入google cardboard-xr-plugin实现android手机VR
我们提到VR,总是会想到Oculus,HTC Vive,Pico等头戴VR设备,但是别忘了,最早Google就通过再手机端实现VR了,而且还推出过Cardboard手机盒子,让我们可以用最低的成本体验到VR效果。原创 2023-05-24 17:08:35 · 2747 阅读 · 1 评论 -
Unity之使用Photon Server + PUN2 开发局域网多人游戏
Photon Engine是一款跨平台的实时多人游戏引擎,它提供了可靠的基础设施和工具,使开发者能够轻松地构建和部署多人游戏。Photon Engine支持多种平台,包括PC、移动设备和Web,同时还提供了多种语言的SDK,如C++、C#、Java、JavaScript等,使得开发者可以使用自己熟悉的编程语言进行开发。Photon Engine的核心功能包括实时通信、房间管理、匹配制度、数据同步等,这些功能都是为了支持多人游戏而设计的。原创 2023-05-23 17:06:41 · 3177 阅读 · 0 评论 -
Unity之使用Photon PUN开发多人游戏教程
Photon是一个网络引擎和多人游戏平台,可以处理其服务器上的所有请求,我们可以在 Unity(或其他游戏引擎)中使用它,并快速把游戏接入Photon的网络中,而我们就可以专注于在项目中添加逻辑,专注于游戏玩法和功能了。PUN(Photon Unity Networking)是一种开箱即用的解决方案,用于处理 Unity 项目中的多人游戏,在本教程中,我们将学习如何:1.创建一个房间供其他玩家连接2.最多可让 20 名玩家连接到同一游戏3.了解玩家如何通过自定义操作相互互动并影响我们的游戏。原创 2023-05-23 08:56:57 · 1739 阅读 · 0 评论 -
Unity之如何接入HybridCLR(代号wolong,原huatuo)热更新框架
HybridCLR(代号wolong)是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。HybridCLR快速上手官方还提供了一个简易的小Demo,演示了如何使用HybridCLR实现热更新。官方文档其实已经非常详细了,我写本文目的主要为了记录一下我的接入过程。我们可以下载官方的示例Demo,我们参考Demo更容易理解HybridCLR。原创 2023-04-12 01:18:12 · 1841 阅读 · 3 评论 -
Unity如何实现3D物体拆解组装
最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍现,也很有必要写篇博客来记录一下。首先,我们先来看下我们要实现的效果,就是对一个发动机(任意多组件物体,如:车)的360°预览查看,手动拖拽拆解,手动拖拽组装。360°旋转视角远近拉伸视角点击拖拽拆卸拖拽组装。原创 2023-02-18 00:20:33 · 9217 阅读 · 57 评论 -
Unity之如何实现TTS文本转语音(真人发音)
微软Azure TTS 文本转语音 服务将文本转换为逼真的语音的语音服务功能支持个各国语言,各种中文各种方言,支持不同音色男音女音支持离线和在线版本原创 2022-10-15 17:42:16 · 4373 阅读 · 0 评论 -
Unity之如何实现一个VR任务(剧情)系统
最近再做一个VR项目,里面有大量的剧情和VR操作任务。比如:1.张三说了什么话,干了什么事,然后,李四又说了什么,做了什么动画,完了之后,场景中某个物体高亮,让我们触摸或者射线点击(pc的话鼠标点击)和其发生交互。2.我们使用VR手柄或者鼠标与场景中的一个物体或者仪器,进行频繁的交互。3.VR场景中出现一些选择性的操作,不同操作进入不同的剧情分支。比如UI选择是|否,物体选择A|B等,当你选了是或者触摸了A,就会进入A分支剧情。相反如果选择了B就会进入B分支。原创 2023-02-13 18:26:54 · 2242 阅读 · 8 评论 -
Unity如何实现录制回放功能
最近一个VR项目,需要实现一个第三人称视角的回放功能,如果这种功能纯让美术去K动画,那显然会非常消耗人力,且复用性极差,所以我想了一个方案。大致原理:使用第一人称控制人物行为,然后使用帧同步的机制,记录下来用户的每一帧有效操作,并存储下来,最后当我们回放时,就可以按照用户的真是操作指令,一帧一帧的还原第一人称的行为。这样美术同学就只需要去做一些通用行的简单的动画片段即可。原创 2023-01-30 19:12:59 · 2497 阅读 · 0 评论 -
Unity如何实现一个弹框队列管理PopManager
一.前言:最近游戏中加的弹窗页面有点多,导致快上线时,频繁出现弹窗的问题,不是冲突了,就是出不来,所以我想从根源上解决这个问题。解决弹窗的问题,需要把握好3点:1.需要整理各个弹窗的优先级,2.需要清除各个弹窗的弹出条件和弹出时机。3.需要做好弹窗队列的统一管理。二.弹窗配置如果想更方便的管理弹窗的优先级,弹出条件,关闭时机等,我们必须有一个弹窗配置表。如下所示:id弹窗名称弹出优先级弹出条件mask切场景行为可重复入栈idnameprioritypag原创 2022-03-31 11:43:56 · 5322 阅读 · 0 评论 -
Unity如何接入Firebase Cloud Message远程推送
一. 前言:当一款游戏发展到一定阶段,必不可少的要接入推送SDK,推送功能,分为以下两种:本地推送:玩家打开游戏后,给手机系统通知设置推送的倒计时,等游戏关闭后,倒计时结束时,手机会自动打开通知给用户。由于是提前设定死的内容和计时器,所以灵活性差。远程通知:有一个服务器后台,可以随时随地给玩家发送通知提醒。好处是灵活,但是坏处就是无法根据用户的进度,定制推送内容。所有用户一把抓,走统一逻辑推送。二.远程推送我们今天要聊的远程推送,是基于Firebase Cloud Message的,如原创 2022-03-25 11:19:24 · 7726 阅读 · 0 评论 -
Unity如何接入本地推送 Mobile Notifications
一. 前言:当一款游戏发展到一定阶段,必不可少的要接入推送SDK,推送功能,分为以下两种:本地推送:玩家打开游戏后,给手机系统通知设置推送的倒计时,等游戏关闭后,倒计时结束时,手机会自动打开通知给用户。由于是提前设定死的内容和计时器,所以灵活性差。远程通知:有一个服务器后台,可以随时随地给玩家发送通知提醒。好处是灵活,但是坏处就是无法根据用户的进度,定制推送内容。所有用户一把抓,走统一逻辑推送。二.本地推送本地推送我们接入的是Unity自带的工具包Mobile Notification原创 2022-03-23 14:18:50 · 10466 阅读 · 0 评论 -
Unity-TextMeshPro如何扩展材质实现字体Face+Outline流光效果
前言TexeMeshPro 是Unity的一个Text文本插件,实现了比UGUI的Text,更好看的效果,跟高效的性能,所以深受大家的喜欢,但是再好的插件,也不是万能的,比如我们的策划有个新需求,要我们的VIP的名字比普通玩家有更好看的效果,例如:字体流光,外发光颜色扰动,字体贴图等等。那我们就需要去扩展TextMeshPRo的shader功能了。如下图所示本文,我就带大家一起来扩展一下:如何扩展TextMeshProUGUITextMesh原始面板扩展功能后的面板扩展TextMeshPro原创 2022-01-15 21:03:35 · 8468 阅读 · 3 评论 -
xlua-framework之网络框架
前言一般我们说到网络框架,主要是指Socket网络框架,如果是Http的话,我们没有必要单独介绍了,简单用可以直接使用WWW或者UnityWebRequest,如果稍微复杂的使用,可以使用RestSharp库。所以我们本章主要讨论的是xlua-framework框架是如何实现socket网络框架的。虽然lua自带的有socket库,但是luasocket其实更适合写命令行工具。游戏里直接用为Lua写的网络库其实不多,大多数是从C++、C#封装一个自己的库,然后在lua中调用。当然也有luasocket实原创 2021-10-14 15:26:15 · 1654 阅读 · 0 评论 -
xlua-framework之UI框架
前言我们前面说过xluaframework这个框架,是一个纯lua的一个框架,也就是说我们所有的逻辑都可以在lua中实现,只有资源模块和网络模块是c#原生写的,但是也在lua中给我们包装的工具类,让我们更方便的使用。在框架的纯lua代码中,不得不说,ui框架是我最喜欢的,一套基于mvc的一套ui框架。说到MVC框架,很多人可能会说,mvc根本就不适合游戏,此言差矣,我这里要郑重其事的来说明一下。首先,mvc,是一种编程思想或者说框架思想,并不是一个设计模式,而这种思想的核心是分层,也就是说,我们把ui原创 2021-10-13 17:32:40 · 2024 阅读 · 1 评论 -
xlua-framework之资源管理器
一.前言xlua-framework是一个基于xlua的纯lua游戏框架,里面包含UI管理器,场景管理器,资源加载器,对象池管理器,网络管理器,DataCenter数据管理,还融合了一些ulua的小工具。总的来说,是比较全面的游戏框架,用起来是非常顺手。个人感觉比luaFramework的pureMVC要好用。二.C#端资源加载AssetBundleManager.cs框架的资源加载器是AssetBundleManager,主要功能就是加载预制体,图片等资源。资源加载的整体思路是根据AssetBun原创 2021-10-12 23:20:44 · 962 阅读 · 4 评论 -
unity如何接入puerts
一.前言puerts是游戏引擎下的TypeScript编程解决方案提供了一个JavaScript运行时提供通过TypeScript访问宿主引擎的能力(JavaScript层面的绑定以及TypeScript声明生成)二.puerts的优势JavaScript生态有众多的库和工具链,结合专业商业引擎的渲染能力,快速打造游戏相比游戏领域常用的lua脚本,TypeScript的静态类型检查有助于编写更健壮,可维护性更好的程序高效:全引擎,全平台支持反射Binding,无需额外(生成代码)步骤即可原创 2021-10-12 16:36:20 · 1810 阅读 · 0 评论 -
Xlua之高级篇-如何让lua支持async+await语法
前言C# 5.0时代引入async和await关键字,这两个关键字可以让我们更方便的写出异步代码。请参阅使用 Async 和 Await 的异步编程中的说明。async-await关键字使用 async 修饰符可将方法、lambda 表达式或匿名方法指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法 。 如下示例定义了一个名为 ExampleMethodAsync 的异步方法:public async Task<int> ExampleMethodAsync(){原创 2021-10-10 22:39:53 · 2806 阅读 · 0 评论 -
Xlua之高级篇-让lua支持try-catch
一.前言由于 Lua 是一门嵌入式扩展语言,其所有行为均源于宿主程序中 C 代码对某个 Lua 库函数的调用。 (单独使用 Lua 时,lua 程序就是宿主程序。) 所以,在编译或运行 Lua 代码块的过程中,无论何时发生错误, 控制权都返回给宿主,由宿主负责采取恰当的措施(比如打印错误消息)。可以在 Lua 代码中调用 error 函数来显式地抛出一个错误。 如果你需要在 Lua 中捕获这些错误, 可以使用 pcall 或 xpcall 在 保护模式 下调用一个函数,类似try-catch语句。二.原创 2021-10-09 15:53:04 · 983 阅读 · 0 评论 -
Xlua之高级篇-字节码加密
Lua的加密一.前言一般我们说lua的加密,都是指把lua编译成字节码,因为lua的解释器执行lua代码时,也是先把lua源码转成字节码,然后再执行字节码,所以我们把lua转成字节码,实际上出了加密的作用外,还有加速lua执行效率的作用。我们要想把lua源码转成字节码,lua的编译器luac.exe必不可少,所以我们必须先编译lua的源码,编译出lua的编译器luac.exe。1.lua源码编译2.luac编译lua代码为字节码二.lua源码编译1.从Lua官网下载lua源码,解压后如下图原创 2021-10-08 22:55:34 · 1872 阅读 · 0 评论 -
Xlua之进阶篇
Xlua进阶上一篇我们介绍了xlua的官方示例,这篇我们就介绍下正式的项目中如何使用xlua,以及如何加载lua文件。1.加载xxxx.lua文件使用DoString执行:require 'xxxx'luaenv = new LuaEnv();luaenv.DoString("require 'xxxx'");2.自定义lua文件加载器 const string luaAssetbundleAssetName = "Lua"; const string luaScriptsFo原创 2021-10-07 22:00:49 · 466 阅读 · 0 评论 -
Xlua之入门篇Example详解
前言当前unity在手游平台主要的热更新方案有:Lua:高效、轻量级、可嵌入的脚本语言,也有做成熟的框架(Xlua,Tolua,Slua),速度最快,使用者也最多(魔兽世界,王者荣耀等)ILRuntime:全C#开发,最便捷省事的热更方案TypeScript:进两年新出的热更解决方案Puerts腾讯出品,和lua一样作为脚本语言来解析执行,实现热更,但是TS/JS是静态类型语言,自带语法提示,还有强大的js生态,让puerts成为了热更框架的一匹黑马今天我们只说Lua,很多小白在对原创 2021-10-07 19:39:22 · 785 阅读 · 0 评论 -
最新xlua和puerts性能对比
puerts是游戏引擎下的TypeScript编程解决方案,可以支持Unity和Unreal。由于TS/JS的强大的生态圈,这套热更框架势必会吸引很多人。我在研究了2天后,也很好奇js的性能和lua的性能到底差异有多大,我看tencen官方还有车神的博客都没有直接回答这个问题,只是有些人说,差异不大。所以我今天来做一个测试。使用的Puerts库地址https://github.com/Tencent/puerts使用的Xlua库地址https://github.com/Tencent/xLua原创 2021-09-24 20:29:11 · 4471 阅读 · 0 评论