Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
老鱼er
et
提交
61b7f04b
E
et
项目概览
老鱼er
/
et
与 Fork 源项目一致
从无法访问的项目Fork
通知
10
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
et
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
61b7f04b
编写于
10月 22, 2018
作者:
T
tanghai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Actor前缀去掉,改成端到端的命名方式,方便看到消息路径
上级
251e1216
变更
14
显示空白变更内容
内联
并排
Showing
14 changed file
with
42 addition
and
171 deletion
+42
-171
Proto/OuterMessage.proto
Proto/OuterMessage.proto
+3
-3
Server/Hotfix/Handler/C2M_TestRequestHandler.cs
Server/Hotfix/Handler/C2M_TestRequestHandler.cs
+16
-0
Server/Hotfix/Module/Demo/G2M_CreateUnitHandler.cs
Server/Hotfix/Module/Demo/G2M_CreateUnitHandler.cs
+1
-1
Unity/Assets/Hotfix/Module/Demo/Actor_CreateUnitsHandler.cs.meta
...ssets/Hotfix/Module/Demo/Actor_CreateUnitsHandler.cs.meta
+0
-11
Unity/Assets/Hotfix/Module/Demo/M2C_CreateUnitsHandler.cs
Unity/Assets/Hotfix/Module/Demo/M2C_CreateUnitsHandler.cs
+2
-2
Unity/Assets/Hotfix/Module/Demo/M2C_CreateUnitsHandler.cs.meta
.../Assets/Hotfix/Module/Demo/M2C_CreateUnitsHandler.cs.meta
+1
-1
Unity/Assets/Model/ILBinding/CLRBindings.cs
Unity/Assets/Model/ILBinding/CLRBindings.cs
+0
-2
Unity/Assets/Model/ILBinding/ETModel_Actor_CreateUnits_Binding.cs
...sets/Model/ILBinding/ETModel_Actor_CreateUnits_Binding.cs
+0
-51
Unity/Assets/Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs
...sets/Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs
+0
-68
Unity/Assets/Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs.meta
...Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs.meta
+0
-11
Unity/Assets/Model/Module/Message/OuterMessage.cs
Unity/Assets/Model/Module/Message/OuterMessage.cs
+9
-9
Unity/Assets/Model/Module/Message/OuterOpcode.cs
Unity/Assets/Model/Module/Message/OuterOpcode.cs
+9
-9
Unity/Unity.Hotfix.csproj
Unity/Unity.Hotfix.csproj
+1
-1
Unity/Unity.Model.csproj
Unity/Unity.Model.csproj
+0
-2
未找到文件。
Proto/OuterMessage.proto
浏览文件 @
61b7f04b
...
...
@@ -8,14 +8,14 @@ message Actor_Test // IActorMessage
string
Info
=
1
;
}
message
Actor
_TestRequest
// IActorLocationRequest
message
C2M
_TestRequest
// IActorLocationRequest
{
int32
RpcId
=
90
;
int64
ActorId
=
93
;
string
request
=
1
;
}
message
Actor
_TestResponse
// IActorLocationResponse
message
M2C
_TestResponse
// IActorLocationResponse
{
int32
RpcId
=
90
;
int32
Error
=
91
;
...
...
@@ -62,7 +62,7 @@ message UnitInfo
float
Z
=
4
;
}
message
Actor
_CreateUnits
// IActorMessage
message
M2C
_CreateUnits
// IActorMessage
{
int32
RpcId
=
90
;
int64
ActorId
=
93
;
...
...
Server/Hotfix/Handler/
Actor
_TestRequestHandler.cs
→
Server/Hotfix/Handler/
C2M
_TestRequestHandler.cs
浏览文件 @
61b7f04b
...
...
@@ -5,12 +5,12 @@ using ETModel;
namespace
ETHotfix
{
[
ActorMessageHandler
(
AppType
.
Map
)]
public
class
Actor_TestRequestHandler
:
AMActorLocationRpcHandler
<
Unit
,
Actor_TestRequest
,
Actor
_TestResponse
>
public
class
C2M_TestRequestHandler
:
AMActorLocationRpcHandler
<
Unit
,
C2M_TestRequest
,
M2C
_TestResponse
>
{
protected
override
async
ETTask
Run
(
Unit
unit
,
Actor_TestRequest
message
,
Action
<
Actor
_TestResponse
>
reply
)
protected
override
async
ETTask
Run
(
Unit
unit
,
C2M_TestRequest
message
,
Action
<
M2C
_TestResponse
>
reply
)
{
await
ETTask
.
CompletedTask
;
reply
(
new
Actor
_TestResponse
()
{
Response
=
"response actor rpc"
});
reply
(
new
M2C
_TestResponse
()
{
Response
=
"response actor rpc"
});
}
}
}
\ No newline at end of file
Server/Hotfix/Module/Demo/G2M_CreateUnitHandler.cs
浏览文件 @
61b7f04b
...
...
@@ -29,7 +29,7 @@ namespace ETHotfix
// 广播创建的unit
Actor_CreateUnits
createUnits
=
new
Actor
_CreateUnits
();
M2C_CreateUnits
createUnits
=
new
M2C
_CreateUnits
();
Unit
[]
units
=
Game
.
Scene
.
GetComponent
<
UnitComponent
>().
GetAll
();
foreach
(
Unit
u
in
units
)
{
...
...
Unity/Assets/Hotfix/Module/Demo/Actor_CreateUnitsHandler.cs.meta
已删除
100644 → 0
浏览文件 @
251e1216
fileFormatVersion: 2
guid: 14ada40722b476047abbee1b87e7a544
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Unity/Assets/Hotfix/Module/Demo/
Actor
_CreateUnitsHandler.cs
→
Unity/Assets/Hotfix/Module/Demo/
M2C
_CreateUnitsHandler.cs
浏览文件 @
61b7f04b
...
...
@@ -5,9 +5,9 @@ using Vector3 = UnityEngine.Vector3;
namespace
ETHotfix
{
[
MessageHandler
]
public
class
Actor_CreateUnitsHandler
:
AMHandler
<
Actor
_CreateUnits
>
public
class
M2C_CreateUnitsHandler
:
AMHandler
<
M2C
_CreateUnits
>
{
protected
override
void
Run
(
ETModel
.
Session
session
,
Actor
_CreateUnits
message
)
protected
override
void
Run
(
ETModel
.
Session
session
,
M2C
_CreateUnits
message
)
{
UnitComponent
unitComponent
=
ETModel
.
Game
.
Scene
.
GetComponent
<
UnitComponent
>();
...
...
Unity/Assets/
Model/ILBinding/ETModel_Actor_CreateUnits_Binding
.cs.meta
→
Unity/Assets/
Hotfix/Module/Demo/M2C_CreateUnitsHandler
.cs.meta
浏览文件 @
61b7f04b
fileFormatVersion: 2
guid:
49d6836b57f6b4548bc5dc53a02646a
9
guid:
8efe3c1941874624198f5f21d3c9d7f
9
MonoImporter:
externalObjects: {}
serializedVersion: 2
...
...
Unity/Assets/Model/ILBinding/CLRBindings.cs
浏览文件 @
61b7f04b
...
...
@@ -53,7 +53,6 @@ namespace ILRuntime.Runtime.Generated
ETModel_ResourcesComponent_Binding
.
Register
(
app
);
ETModel_GameObjectHelper_Binding
.
Register
(
app
);
UnityEngine_TextAsset_Binding
.
Register
(
app
);
ETModel_Actor_CreateUnits_Binding
.
Register
(
app
);
Google_Protobuf_Collections_RepeatedField_1_UnitInfo_Binding
.
Register
(
app
);
System_Collections_Generic_IEnumerator_1_UnitInfo_Binding
.
Register
(
app
);
ETModel_UnitComponent_Binding
.
Register
(
app
);
...
...
@@ -117,7 +116,6 @@ namespace ILRuntime.Runtime.Generated
ReferenceCollector_Binding
.
Register
(
app
);
UnityEngine_UI_Button_Binding
.
Register
(
app
);
ETModel_ActionHelper_Binding
.
Register
(
app
);
ETModel_Actor_TestRequest_Binding
.
Register
(
app
);
System_Threading_Tasks_Task_1_IResponse_Binding
.
Register
(
app
);
System_Runtime_CompilerServices_TaskAwaiter_1_IResponse_Binding
.
Register
(
app
);
ETModel_Actor_TransferRequest_Binding
.
Register
(
app
);
...
...
Unity/Assets/Model/ILBinding/ETModel_Actor_CreateUnits_Binding.cs
已删除
100644 → 0
浏览文件 @
251e1216
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Reflection
;
using
System.Runtime.InteropServices
;
using
ILRuntime.CLR.TypeSystem
;
using
ILRuntime.CLR.Method
;
using
ILRuntime.Runtime.Enviorment
;
using
ILRuntime.Runtime.Intepreter
;
using
ILRuntime.Runtime.Stack
;
using
ILRuntime.Reflection
;
using
ILRuntime.CLR.Utils
;
namespace
ILRuntime.Runtime.Generated
{
unsafe
class
ETModel_Actor_CreateUnits_Binding
{
public
static
void
Register
(
ILRuntime
.
Runtime
.
Enviorment
.
AppDomain
app
)
{
BindingFlags
flag
=
BindingFlags
.
Public
|
BindingFlags
.
Instance
|
BindingFlags
.
Static
|
BindingFlags
.
DeclaredOnly
;
MethodBase
method
;
Type
[]
args
;
Type
type
=
typeof
(
ETModel
.
Actor_CreateUnits
);
args
=
new
Type
[]{};
method
=
type
.
GetMethod
(
"get_Units"
,
flag
,
null
,
args
,
null
);
app
.
RegisterCLRMethodRedirection
(
method
,
get_Units_0
);
}
static
StackObject
*
get_Units_0
(
ILIntepreter
__intp
,
StackObject
*
__esp
,
IList
<
object
>
__mStack
,
CLRMethod
__method
,
bool
isNewObj
)
{
ILRuntime
.
Runtime
.
Enviorment
.
AppDomain
__domain
=
__intp
.
AppDomain
;
StackObject
*
ptr_of_this_method
;
StackObject
*
__ret
=
ILIntepreter
.
Minus
(
__esp
,
1
);
ptr_of_this_method
=
ILIntepreter
.
Minus
(
__esp
,
1
);
ETModel
.
Actor_CreateUnits
instance_of_this_method
=
(
ETModel
.
Actor_CreateUnits
)
typeof
(
ETModel
.
Actor_CreateUnits
).
CheckCLRTypes
(
StackObject
.
ToObject
(
ptr_of_this_method
,
__domain
,
__mStack
));
__intp
.
Free
(
ptr_of_this_method
);
var
result_of_this_method
=
instance_of_this_method
.
Units
;
return
ILIntepreter
.
PushObject
(
__ret
,
__mStack
,
result_of_this_method
);
}
}
}
Unity/Assets/Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs
已删除
100644 → 0
浏览文件 @
251e1216
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Reflection
;
using
System.Runtime.InteropServices
;
using
ILRuntime.CLR.TypeSystem
;
using
ILRuntime.CLR.Method
;
using
ILRuntime.Runtime.Enviorment
;
using
ILRuntime.Runtime.Intepreter
;
using
ILRuntime.Runtime.Stack
;
using
ILRuntime.Reflection
;
using
ILRuntime.CLR.Utils
;
namespace
ILRuntime.Runtime.Generated
{
unsafe
class
ETModel_Actor_TestRequest_Binding
{
public
static
void
Register
(
ILRuntime
.
Runtime
.
Enviorment
.
AppDomain
app
)
{
BindingFlags
flag
=
BindingFlags
.
Public
|
BindingFlags
.
Instance
|
BindingFlags
.
Static
|
BindingFlags
.
DeclaredOnly
;
MethodBase
method
;
Type
[]
args
;
Type
type
=
typeof
(
ETModel
.
Actor_TestRequest
);
args
=
new
Type
[]{
typeof
(
System
.
String
)};
method
=
type
.
GetMethod
(
"set_Request"
,
flag
,
null
,
args
,
null
);
app
.
RegisterCLRMethodRedirection
(
method
,
set_Request_0
);
args
=
new
Type
[]{};
method
=
type
.
GetConstructor
(
flag
,
null
,
args
,
null
);
app
.
RegisterCLRMethodRedirection
(
method
,
Ctor_0
);
}
static
StackObject
*
set_Request_0
(
ILIntepreter
__intp
,
StackObject
*
__esp
,
IList
<
object
>
__mStack
,
CLRMethod
__method
,
bool
isNewObj
)
{
ILRuntime
.
Runtime
.
Enviorment
.
AppDomain
__domain
=
__intp
.
AppDomain
;
StackObject
*
ptr_of_this_method
;
StackObject
*
__ret
=
ILIntepreter
.
Minus
(
__esp
,
2
);
ptr_of_this_method
=
ILIntepreter
.
Minus
(
__esp
,
1
);
System
.
String
@value
=
(
System
.
String
)
typeof
(
System
.
String
).
CheckCLRTypes
(
StackObject
.
ToObject
(
ptr_of_this_method
,
__domain
,
__mStack
));
__intp
.
Free
(
ptr_of_this_method
);
ptr_of_this_method
=
ILIntepreter
.
Minus
(
__esp
,
2
);
ETModel
.
Actor_TestRequest
instance_of_this_method
=
(
ETModel
.
Actor_TestRequest
)
typeof
(
ETModel
.
Actor_TestRequest
).
CheckCLRTypes
(
StackObject
.
ToObject
(
ptr_of_this_method
,
__domain
,
__mStack
));
__intp
.
Free
(
ptr_of_this_method
);
instance_of_this_method
.
Request
=
value
;
return
__ret
;
}
static
StackObject
*
Ctor_0
(
ILIntepreter
__intp
,
StackObject
*
__esp
,
IList
<
object
>
__mStack
,
CLRMethod
__method
,
bool
isNewObj
)
{
ILRuntime
.
Runtime
.
Enviorment
.
AppDomain
__domain
=
__intp
.
AppDomain
;
StackObject
*
__ret
=
ILIntepreter
.
Minus
(
__esp
,
0
);
var
result_of_this_method
=
new
ETModel
.
Actor_TestRequest
();
return
ILIntepreter
.
PushObject
(
__ret
,
__mStack
,
result_of_this_method
);
}
}
}
Unity/Assets/Model/ILBinding/ETModel_Actor_TestRequest_Binding.cs.meta
已删除
100644 → 0
浏览文件 @
251e1216
fileFormatVersion: 2
guid: f0c8211301dd10a49a516e14db1974ca
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Unity/Assets/Model/Module/Message/OuterMessage.cs
浏览文件 @
61b7f04b
...
...
@@ -94,9 +94,9 @@ namespace ETModel {
}
public
partial
class
Actor
_TestRequest
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
Actor_TestRequest
>
_parser
=
new
pb
::
MessageParser
<
Actor_TestRequest
>(()
=>
(
Actor_TestRequest
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
Actor
_TestRequest
)));
public
static
pb
::
MessageParser
<
Actor
_TestRequest
>
Parser
{
get
{
return
_parser
;
}
}
public
partial
class
C2M
_TestRequest
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
C2M_TestRequest
>
_parser
=
new
pb
::
MessageParser
<
C2M_TestRequest
>(()
=>
(
C2M_TestRequest
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
C2M
_TestRequest
)));
public
static
pb
::
MessageParser
<
C2M
_TestRequest
>
Parser
{
get
{
return
_parser
;
}
}
private
int
rpcId_
;
public
int
RpcId
{
...
...
@@ -179,9 +179,9 @@ namespace ETModel {
}
public
partial
class
Actor
_TestResponse
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
Actor_TestResponse
>
_parser
=
new
pb
::
MessageParser
<
Actor_TestResponse
>(()
=>
(
Actor_TestResponse
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
Actor
_TestResponse
)));
public
static
pb
::
MessageParser
<
Actor
_TestResponse
>
Parser
{
get
{
return
_parser
;
}
}
public
partial
class
M2C
_TestResponse
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
M2C_TestResponse
>
_parser
=
new
pb
::
MessageParser
<
M2C_TestResponse
>(()
=>
(
M2C_TestResponse
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
M2C
_TestResponse
)));
public
static
pb
::
MessageParser
<
M2C
_TestResponse
>
Parser
{
get
{
return
_parser
;
}
}
private
int
rpcId_
;
public
int
RpcId
{
...
...
@@ -731,9 +731,9 @@ namespace ETModel {
}
public
partial
class
Actor
_CreateUnits
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
Actor_CreateUnits
>
_parser
=
new
pb
::
MessageParser
<
Actor_CreateUnits
>(()
=>
(
Actor_CreateUnits
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
Actor
_CreateUnits
)));
public
static
pb
::
MessageParser
<
Actor
_CreateUnits
>
Parser
{
get
{
return
_parser
;
}
}
public
partial
class
M2C
_CreateUnits
:
pb
::
IMessage
{
private
static
readonly
pb
::
MessageParser
<
M2C_CreateUnits
>
_parser
=
new
pb
::
MessageParser
<
M2C_CreateUnits
>(()
=>
(
M2C_CreateUnits
)
MessagePool
.
Instance
.
Fetch
(
typeof
(
M2C
_CreateUnits
)));
public
static
pb
::
MessageParser
<
M2C
_CreateUnits
>
Parser
{
get
{
return
_parser
;
}
}
private
int
rpcId_
;
public
int
RpcId
{
...
...
Unity/Assets/Model/Module/Message/OuterOpcode.cs
浏览文件 @
61b7f04b
...
...
@@ -4,11 +4,11 @@ namespace ETModel
[
Message
(
OuterOpcode
.
Actor_Test
)]
public
partial
class
Actor_Test
:
IActorMessage
{}
[
Message
(
OuterOpcode
.
Actor
_TestRequest
)]
public
partial
class
Actor
_TestRequest
:
IActorLocationRequest
{}
[
Message
(
OuterOpcode
.
C2M
_TestRequest
)]
public
partial
class
C2M
_TestRequest
:
IActorLocationRequest
{}
[
Message
(
OuterOpcode
.
Actor
_TestResponse
)]
public
partial
class
Actor
_TestResponse
:
IActorLocationResponse
{}
[
Message
(
OuterOpcode
.
M2C
_TestResponse
)]
public
partial
class
M2C
_TestResponse
:
IActorLocationResponse
{}
[
Message
(
OuterOpcode
.
Actor_TransferRequest
)]
public
partial
class
Actor_TransferRequest
:
IActorLocationRequest
{}
...
...
@@ -27,8 +27,8 @@ namespace ETModel
[
Message
(
OuterOpcode
.
UnitInfo
)]
public
partial
class
UnitInfo
{}
[
Message
(
OuterOpcode
.
Actor
_CreateUnits
)]
public
partial
class
Actor
_CreateUnits
:
IActorMessage
{}
[
Message
(
OuterOpcode
.
M2C
_CreateUnits
)]
public
partial
class
M2C
_CreateUnits
:
IActorMessage
{}
[
Message
(
OuterOpcode
.
Frame_ClickMap
)]
public
partial
class
Frame_ClickMap
:
IActorLocationMessage
{}
...
...
@@ -57,14 +57,14 @@ namespace ETModel
public
static
partial
class
OuterOpcode
{
public
const
ushort
Actor_Test
=
101
;
public
const
ushort
Actor
_TestRequest
=
102
;
public
const
ushort
Actor
_TestResponse
=
103
;
public
const
ushort
C2M
_TestRequest
=
102
;
public
const
ushort
M2C
_TestResponse
=
103
;
public
const
ushort
Actor_TransferRequest
=
104
;
public
const
ushort
Actor_TransferResponse
=
105
;
public
const
ushort
C2G_EnterMap
=
106
;
public
const
ushort
G2C_EnterMap
=
107
;
public
const
ushort
UnitInfo
=
108
;
public
const
ushort
Actor
_CreateUnits
=
109
;
public
const
ushort
M2C
_CreateUnits
=
109
;
public
const
ushort
Frame_ClickMap
=
110
;
public
const
ushort
M2C_PathfindingResult
=
111
;
public
const
ushort
C2R_Ping
=
112
;
...
...
Unity/Unity.Hotfix.csproj
浏览文件 @
61b7f04b
...
...
@@ -89,9 +89,9 @@
<Compile
Include=
"Assets\Hotfix\Module\Config\ConfigComponent.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Config\ConfigHelper.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Config\IConfig.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\Actor_CreateUnitsHandler.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\Actor_TestHandler.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\G2C_TestHotfixHandler.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\M2C_CreateUnitsHandler.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\M2C_PathfindingResultHandler.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\OperaComponent.cs"
/>
<Compile
Include=
"Assets\Hotfix\Module\Demo\TestHotfixSubscribMonoEvent_LogString.cs"
/>
...
...
Unity/Unity.Model.csproj
浏览文件 @
61b7f04b
...
...
@@ -164,9 +164,7 @@
<Compile
Include=
"Assets\Model\Helper\ResourcesHelper.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\CLRBindings.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_ActionHelper_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_Actor_CreateUnits_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_Actor_Test_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_Actor_TestRequest_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_Actor_TransferRequest_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_C2G_EnterMap_Binding.cs"
/>
<Compile
Include=
"Assets\Model\ILBinding\ETModel_CameraComponent_Binding.cs"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录