Skip to content

Commit f86db22

Browse files
committed
同步Unity平台下的调整
1 parent 2989745 commit f86db22

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

Source/Unity3D/UnityCommon/LuaScriptCoreForUnity.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ extern "C" {
222222
LuaContext *context = dynamic_cast<LuaContext *>(LuaObjectManager::SharedInstance() -> getObject(nativeContextId));
223223
if (context != NULL && message != NULL)
224224
{
225-
context -> raiseException(message);
225+
context -> getCurrentSession() -> reportLuaException(message);
226226
}
227227
}
228228

@@ -546,7 +546,7 @@ extern "C" {
546546
{
547547
std::string methodName = decoder -> readString();
548548
//分割方法组成部分
549-
std::vector<std::string> methodComps = StringUtils::split(methodName, "_", false);
549+
std::deque<std::string> methodComps = StringUtils::split(methodName, "_", false);
550550
LuaUnityExportMethodDescriptor *methodDescriptor = new LuaUnityExportMethodDescriptor(methodComps[0], methodComps[1], classMethodRouteHandler);
551551
typeDescriptor -> addClassMethod(methodComps[0], methodDescriptor);
552552
methodDescriptor -> release();
@@ -563,7 +563,7 @@ extern "C" {
563563
{
564564
std::string methodName = decoder -> readString();
565565
//分割方法组成部分
566-
std::vector<std::string> methodComps = StringUtils::split(methodName, "_", false);
566+
std::deque<std::string> methodComps = StringUtils::split(methodName, "_", false);
567567
LuaUnityExportMethodDescriptor *methodDescriptor = new LuaUnityExportMethodDescriptor(methodComps[0], methodComps[1], instanceMethodRouteHandler);
568568
typeDescriptor -> addInstanceMethod(methodComps[0], methodDescriptor);
569569
methodDescriptor -> release();
@@ -579,7 +579,7 @@ extern "C" {
579579
for (int i = 0; i < size; i++)
580580
{
581581
std::string fieldName = decoder -> readString();
582-
std::vector<std::string> fieldNameComps = StringUtils::split(fieldName, "_", false);
582+
std::deque<std::string> fieldNameComps = StringUtils::split(fieldName, "_", false);
583583

584584
bool canRead = false;
585585
bool canWrite = false;

Source/Unity3D/UnityCommon/LuaUnityExportTypeDescriptor.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "LuaUnityExportTypeDescriptor.hpp"
1010
#include "LuaUnityEnv.hpp"
1111
#include "LuaObjectDescriptor.h"
12+
#include "LuaSession.h"
1213

1314
LuaUnityExportTypeDescriptor::LuaUnityExportTypeDescriptor(std::string name, LuaExportTypeDescriptor *parentTypeDescriptor) : LuaExportTypeDescriptor(name, parentTypeDescriptor)
1415
{
@@ -33,12 +34,12 @@ LuaObjectDescriptor* LuaUnityExportTypeDescriptor::createInstance(LuaSession *se
3334
if (createInstanceHandler != NULL)
3435
{
3536
long long instanceId = createInstanceHandler(objectId());
36-
objectDescriptor = new LuaObjectDescriptor((void *)instanceId, this);
37+
objectDescriptor = new LuaObjectDescriptor(session -> getContext(), (void *)instanceId, this);
3738

3839
//设置本地对象标识
3940
LuaUnityEnv::sharedInstance() -> setNativeObjectId(objectDescriptor -> getObject(),
4041
objectDescriptor -> objectId(),
41-
objectDescriptor -> getLinkId());
42+
objectDescriptor -> getExchangeId());
4243
}
4344

4445
return objectDescriptor;

Source/Unity3D/UnityProject/Assets/Plugins/LuaScriptCore/LuaContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public void onException(LuaExceptionHandler handler)
177177
public void raiseException(string message)
178178
{
179179
NativeUtils.raiseException (_nativeObjectId, message);
180+
throw new Exception (message);
180181
}
181182

182183
/// <summary>

Source/Unity3D/UnityProject/Assets/Scripts/Person.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.CodeDom;
44
using cn.vimfung.luascriptcore;
5+
using System;
56

67
public class Person : LuaExportType
78
{
@@ -31,8 +32,15 @@ public static Person createPerson()
3132

3233
public static Person createPersonError()
3334
{
34-
LuaContext.currentContext.raiseException ("can't create person");
35-
return new Person ();
35+
try
36+
{
37+
LuaContext.currentContext.raiseException ("can't create person");
38+
return new Person ();
39+
}
40+
catch (Exception ex)
41+
{
42+
return null;
43+
}
3644
}
3745

3846
public void speak()

Source/lua-common/LuaFunction.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,14 @@ std::string LuaFunction::typeName()
5454
LuaFunction::LuaFunction (LuaObjectDecoder *decoder)
5555
:LuaManagedObject(decoder)
5656
{
57+
decoder -> readInt32(); //读取Unity中传过来的ContextID,并忽略(decoder中包含context对象)
5758
_exchangeId = decoder -> readString();
5859
}
5960

6061
void LuaFunction::serialization (LuaObjectEncoder *encoder)
6162
{
6263
LuaObject::serialization(encoder);
64+
encoder -> writeInt32(getContext() -> objectId());
6365
encoder -> writeString(_exchangeId);
6466
}
6567

@@ -140,4 +142,4 @@ LuaValue* LuaFunction::invoke(LuaArgumentList *arguments)
140142
getContext() -> gc();
141143

142144
return retValue;
143-
}
145+
}

0 commit comments

Comments
 (0)