From eebd99883b3a88a92f464b3ae17ff4aec60a11fe Mon Sep 17 00:00:00 2001 From: gaoxin Date: Wed, 25 Aug 2021 20:59:26 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=A4=E6=96=AD=E7=89=A9=E4=BD=93=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=A2=AB=E9=94=80=E6=AF=81=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E9=BB=91?= =?UTF-8?q?=E5=B1=8F=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AssetBundles/config.txt | 67 ++++++++++++++++++- .../~Lua/Common/functions.lua | 9 ++- .../~Lua/Framework/Manager/PoolManager.lua | 3 +- .../Framework/Manager/ServerConfigManager.lua | 1 + .../Modules/Battle/BattleRecordManager.lua | 2 +- .../Modules/Battle/View/Unit/SkillCaster.lua | 3 + .../Modules/Carbon/CarbonScoreSortPanel.lua | 22 +++--- .../~Lua/Modules/Expert/PatFaceManager.lua | 4 +- .../Modules/Recruit/SingleRecruitPanel.lua | 2 +- .../~Lua/Modules/RoleInfo/RoleInfoPanel.lua | 6 +- .../~Lua/View/ScrollCycleView.lua | 4 +- .../~Lua/View/SingleFightPlayerView.lua | 2 +- Assets/ManagedResources/~Lua/View/UpView.lua | 4 +- .../Scripts/Editor/Custom/CustomSettings.cs | 2 +- Assets/Scripts/Extension/GameExtension.cs | 7 ++ .../Generate/UnityEngine_GameObjectWrap.cs | 19 ++++++ 16 files changed, 134 insertions(+), 23 deletions(-) diff --git a/AssetBundles/config.txt b/AssetBundles/config.txt index 70fececcea..640567f7f3 100644 --- a/AssetBundles/config.txt +++ b/AssetBundles/config.txt @@ -1 +1,66 @@ -{"Setting":{"LanguagePackager":{"desc":"\u672C\u5730\u5316\u5904\u7406","versionCode":"26","isActive":"0"},"ServerVersion":{"desc":"\u7528\u4E8E\u5207\u6362\u6B63\u5F0F\u670D\u548C\u63D0\u5BA1\u670D","value":"0","versionCode":"26","isActive":"1"},"ThinkAnalysis_GetDeviceID":{"desc":"\u6570\u6570\u83B7\u53D6DeviceID\u65B9\u6CD5","versionCode":"24","isActive":"1"},"LayoutBuilderWrap":{"desc":"\u5F3A\u5236\u5237\u65B0layout\u7EC4\u4EF6\u5927\u5C0F\u7684\u65B9\u6CD5\u4FEE\u6539\u5230lua\u4E2D\u8C03\u7528","versionCode":"25","isActive":"1"},"IS_PLAY_VOICE":{"desc":"","versionCode":"1","isActive":"1"},"IS_TITLE_EFFECT_SCALE":{"desc":"","versionCode":"1","isActive":"1"},"IS_PLAY_LOGIN_VIDEO":{"desc":"","versionCode":"1","isActive":"1"},"PACKAGE_CC_CODE":{"desc":"","versionCode":"1","isActive":"1","value":"1001"},"CURVED_TEXT_CODE":{"desc":"\u662F\u5426\u53EF\u4EE5\u663E\u793A\u5F27\u5F62\u6587\u5B57","versionCode":"30","isActive":"1"},"IS_SELECT_RESLUTION":{"desc":"\u662F\u5426\u53EF\u4EE5\u9009\u62E9\u5E27\u7387","versionCode":"30","isActive":"1"}}} \ No newline at end of file +{ + "Setting": { + "LanguagePackager": { + "desc": "", + "versionCode": "26", + "isActive": "0" + }, + "ServerVersion": { + "desc": "", + "value": "0", + "versionCode": "26", + "isActive": "1" + }, + "ThinkAnalysis_GetDeviceID": { + "desc": "", + "versionCode": "24", + "isActive": "1" + }, + "LayoutBuilderWrap": { + "desc": "", + "versionCode": "25", + "isActive": "1" + }, + "IS_PLAY_VOICE": { + "desc": "", + "versionCode": "1", + "isActive": "1" + }, + "IS_TITLE_EFFECT_SCALE": { + "desc": "", + "versionCode": "1", + "isActive": "1" + }, + "IS_PLAY_LOGIN_VIDEO": { + "desc": "", + "versionCode": "1", + "isActive": "1" + }, + "PACKAGE_CC_CODE": { + "desc": "", + "versionCode": "1", + "isActive": "1", + "value": "1001" + }, + "CURVED_TEXT_CODE": { + "desc": "", + "versionCode": "30", + "isActive": "1" + }, + "IS_SELECT_RESLUTION": { + "desc": "", + "versionCode": "30", + "isActive": "1" + }, + "INNER_WEB_CONTROL": { + "desc": "", + "versionCode": "1", + "isActive": "1" + }, + "IS_NULL": { + "desc": "", + "versionCode": "1", + "isActive": "1" + } + } +} \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Common/functions.lua b/Assets/ManagedResources/~Lua/Common/functions.lua index cd78cc4813..f181c19819 100644 --- a/Assets/ManagedResources/~Lua/Common/functions.lua +++ b/Assets/ManagedResources/~Lua/Common/functions.lua @@ -1341,7 +1341,14 @@ end ---obj必须是userdata(c#对象) function IsNull(obj) - return obj == nil or obj:Equals(nil) + if not obj then + return true + end + if ServerConfigManager.IsSettingActive(ServerConfigManager.SettingConfig.IS_NULL) then + return obj:IsNull() + else + return obj == nil or obj:Equals(nil) + end end ------- 红点相关 ---------- diff --git a/Assets/ManagedResources/~Lua/Framework/Manager/PoolManager.lua b/Assets/ManagedResources/~Lua/Framework/Manager/PoolManager.lua index ac510f5e88..1bfcbe390b 100644 --- a/Assets/ManagedResources/~Lua/Framework/Manager/PoolManager.lua +++ b/Assets/ManagedResources/~Lua/Framework/Manager/PoolManager.lua @@ -203,7 +203,8 @@ function PoolManager:UnLoadAsset(resName,res, assetType) --then if assetType == PoolManager.AssetType.GameObject and res - and tostring(res) ~= "null" then + and tostring(res) ~= "null" + and not IsNull(res) then res.transform:SetParent(self.mPoolTrans) if #pool.resList <= 5 then table.insert(pool.resList,res) diff --git a/Assets/ManagedResources/~Lua/Framework/Manager/ServerConfigManager.lua b/Assets/ManagedResources/~Lua/Framework/Manager/ServerConfigManager.lua index 68f191b250..02b8c63829 100644 --- a/Assets/ManagedResources/~Lua/Framework/Manager/ServerConfigManager.lua +++ b/Assets/ManagedResources/~Lua/Framework/Manager/ServerConfigManager.lua @@ -24,6 +24,7 @@ ServerConfigManager.SettingConfig = { USER_PROTO = "USER_PROTO", -- 用户协议功能是否开启 IS_NO_NOTICE = "IS_NO_NOTICE", -- 是否禁用公告 INNER_WEB_CONTROL = "INNER_WEB_CONTROL", -- 是否使用内置浏览器 + IS_NULL = "IS_NULL", -- 使用C#判断物体是否销毁 } diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/BattleRecordManager.lua b/Assets/ManagedResources/~Lua/Modules/Battle/BattleRecordManager.lua index 8478fe4443..baecad42b9 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/BattleRecordManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/BattleRecordManager.lua @@ -148,7 +148,7 @@ function this.GetBattleBestData(Id) local battleRecord = this.GetBattleRecord(Id) for _, data in pairs(battleRecord.data) do -- 怪物只显示最后一层的怪物信息 - if data.info.camp == 0 then + if data.info and data.info.camp == 0 then -- 计算最大值(不计算异妖的) if data.info.type == BattleUnitType.Role then if data.damage > _MaxDamageValue then diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua index 6b941be150..add78934de 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua @@ -47,6 +47,9 @@ function SkillCaster:OnSkillCast(skill) local duration = combat.KeyFrame/1000 local function _PlaySkill() + if IsNull(self.owner.GameObject) then + return + end -- 调用上层接口 if self.owner.OnSkillPlay then self.owner:OnSkillPlay() diff --git a/Assets/ManagedResources/~Lua/Modules/Carbon/CarbonScoreSortPanel.lua b/Assets/ManagedResources/~Lua/Modules/Carbon/CarbonScoreSortPanel.lua index cf12985e80..51b987a8d4 100644 --- a/Assets/ManagedResources/~Lua/Modules/Carbon/CarbonScoreSortPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Carbon/CarbonScoreSortPanel.lua @@ -476,15 +476,6 @@ end function CarbonScoreSortPanel:OnClose() if callBack then callBack() end this.noneImage:SetActive(false) - if this.ScrollView then - SubUIManager.Close(this.ScrollView) - end - this.ScrollView = nil -end - ---界面销毁时调用(用于子类重写) -function CarbonScoreSortPanel:OnDestroy() - this.spLoader:Destroy() for _, playerHead in pairs(_PlayerHeadList) do playerHead:Recycle() end @@ -495,5 +486,18 @@ function CarbonScoreSortPanel:OnDestroy() this.ScrollView = nil end +--界面销毁时调用(用于子类重写) +function CarbonScoreSortPanel:OnDestroy() + this.spLoader:Destroy() + -- for _, playerHead in pairs(_PlayerHeadList) do + -- playerHead:Recycle() + -- end + -- _PlayerHeadList = {} + -- if this.ScrollView then + -- SubUIManager.Close(this.ScrollView) + -- end + -- this.ScrollView = nil +end + return CarbonScoreSortPanel diff --git a/Assets/ManagedResources/~Lua/Modules/Expert/PatFaceManager.lua b/Assets/ManagedResources/~Lua/Modules/Expert/PatFaceManager.lua index b981c2262a..84d9ec0c95 100644 --- a/Assets/ManagedResources/~Lua/Modules/Expert/PatFaceManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Expert/PatFaceManager.lua @@ -288,7 +288,7 @@ function this.RemainTimeDown(_timeTextExpertgo,_timeTextExpert,timeDown,str) this.timer = nil end this.timer = Timer.New(function() - if _timeTextExpert and tostring(_timeTextExpert) ~= "null" then + if not IsNull(_timeTextExpert) and tostring(_timeTextExpert) ~= "null" then if str then _timeTextExpert.text = str..this.TimeStampToDateString(timeDown) else @@ -296,7 +296,7 @@ function this.RemainTimeDown(_timeTextExpertgo,_timeTextExpert,timeDown,str) end end if timeDown < 0 then - if _timeTextExpertgo then + if not IsNull(_timeTextExpertgo) then _timeTextExpertgo:SetActive(false) end this.timer:Stop() diff --git a/Assets/ManagedResources/~Lua/Modules/Recruit/SingleRecruitPanel.lua b/Assets/ManagedResources/~Lua/Modules/Recruit/SingleRecruitPanel.lua index 51b5b4adc0..5ea75a59bd 100644 --- a/Assets/ManagedResources/~Lua/Modules/Recruit/SingleRecruitPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Recruit/SingleRecruitPanel.lua @@ -127,7 +127,7 @@ function SingleRecruitPanel:BindEvent() end end) Util.AddClick(this.dragView.gameObject, function () - if testLiveGO then + if not IsNull(testLiveGO) then local SkeletonGraphic = testLiveGO:GetComponent("SkeletonGraphic") SkeletonGraphic.AnimationState:SetAnimation(0, "touch", false) end diff --git a/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleInfoPanel.lua b/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleInfoPanel.lua index 99c012c0a2..ba3718b7c7 100644 --- a/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleInfoPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleInfoPanel.lua @@ -403,7 +403,11 @@ function this:UpdateBtnList() tabsList = {} end for k,v in pairs(tabsList) do - tabsList[k].gameObject:SetActive(false) + if IsNull(tabsList[k]) then + tabsList[k] = nil + else + tabsList[k].gameObject:SetActive(false) + end end for k,v in ipairs(tabs) do if not tabsList[k] then diff --git a/Assets/ManagedResources/~Lua/View/ScrollCycleView.lua b/Assets/ManagedResources/~Lua/View/ScrollCycleView.lua index e44c11e657..efa5261365 100644 --- a/Assets/ManagedResources/~Lua/View/ScrollCycleView.lua +++ b/Assets/ManagedResources/~Lua/View/ScrollCycleView.lua @@ -468,8 +468,8 @@ function this:SetShow(showIndex) item = self.cellItemList[j][i] index = j+(i-1)*self.fixedCount dataIndex = j+(i-1 + self.dataLine)*self.fixedCount - - if not item.go then + + if IsNull(item.go) then local go = newObject(self.item) go.transform:SetParent(self.dragGO.transform) go.transform.localScale = Vector3.one diff --git a/Assets/ManagedResources/~Lua/View/SingleFightPlayerView.lua b/Assets/ManagedResources/~Lua/View/SingleFightPlayerView.lua index c930e0212a..06d51bfd06 100644 --- a/Assets/ManagedResources/~Lua/View/SingleFightPlayerView.lua +++ b/Assets/ManagedResources/~Lua/View/SingleFightPlayerView.lua @@ -745,7 +745,7 @@ function SingleFightPlayerView:pravite_ShakeObjOnce(go, isReverse, roleFaceDir, local offSet = isReverse and 90 or 120 offSet = offSet / math.min(Screen.width/1080, Screen.height/1920) - if go then + if not IsNull(go) then local originPos = go:GetComponent("RectTransform").anchoredPosition local value = isReverse and -1 or 1 local targetPos = originPos + Vector2.New(offSet * roleFaceDir.x * value, offSet * roleFaceDir.y * value) diff --git a/Assets/ManagedResources/~Lua/View/UpView.lua b/Assets/ManagedResources/~Lua/View/UpView.lua index bd11988597..bf2f17328d 100644 --- a/Assets/ManagedResources/~Lua/View/UpView.lua +++ b/Assets/ManagedResources/~Lua/View/UpView.lua @@ -209,7 +209,7 @@ function UpView:UpdateGoldVal() local panelShowItemList = self.itemList for i = 1, _ItemMaxNum do if panelShowItemList[i] then - if self.cnyList[i].gameObject then + if not IsNull(self.cnyList[i]) and self.cnyList[i].gameObject then self.cnyList[i].gameObject:SetActive(true) Util.GetGameObject(self.cnyList[i].gameObject, "icon"):GetComponent("Image").sprite = SetIcon(self.spLoader, panelShowItemList[i]) Util.GetGameObject(self.cnyList[i].gameObject, "addFlag"):SetActive(_IsShowPlus(panelShowItemList[i])) @@ -234,7 +234,7 @@ function UpView:UpdateGoldVal() self:_BindRP(panelShowItemList[i], redpot) end else - if self.cnyList[i].gameObject then + if not IsNull(self.cnyList[i]) and self.cnyList[i].gameObject then self.cnyList[i].gameObject:SetActive(false) end end diff --git a/Assets/Scripts/Editor/Custom/CustomSettings.cs b/Assets/Scripts/Editor/Custom/CustomSettings.cs index f958a92a90..621eb8ae24 100644 --- a/Assets/Scripts/Editor/Custom/CustomSettings.cs +++ b/Assets/Scripts/Editor/Custom/CustomSettings.cs @@ -123,7 +123,7 @@ public static class CustomSettings _GT(typeof(PlayerPrefs)), _GT(typeof(Behaviour)), _GT(typeof(MonoBehaviour)), - _GT(typeof(GameObject)), + _GT(typeof(GameObject)).AddExtendType(typeof(UnityEngineObjectExtention)), _GT(typeof(TrackedReference)), _GT(typeof(Application)), _GT(typeof(Physics)), diff --git a/Assets/Scripts/Extension/GameExtension.cs b/Assets/Scripts/Extension/GameExtension.cs index 1270af0ddb..7adf7e51e7 100644 --- a/Assets/Scripts/Extension/GameExtension.cs +++ b/Assets/Scripts/Extension/GameExtension.cs @@ -15,4 +15,11 @@ namespace GameLogic return t; } } + public static class UnityEngineObjectExtention + { + public static bool IsNull(this UnityEngine.Object o) // 或者名字叫IsDestroyed等等 + { + return o == null; + } + } } diff --git a/Assets/Source/Generate/UnityEngine_GameObjectWrap.cs b/Assets/Source/Generate/UnityEngine_GameObjectWrap.cs index ab82b5d53e..564bb7fb17 100644 --- a/Assets/Source/Generate/UnityEngine_GameObjectWrap.cs +++ b/Assets/Source/Generate/UnityEngine_GameObjectWrap.cs @@ -1,5 +1,6 @@ //this source code was auto-generated by tolua#, do not modify it using System; +using GameLogic; using LuaInterface; public class UnityEngine_GameObjectWrap @@ -24,6 +25,7 @@ public class UnityEngine_GameObjectWrap L.RegFunction("BroadcastMessage", BroadcastMessage); L.RegFunction("SendMessageUpwards", SendMessageUpwards); L.RegFunction("SendMessage", SendMessage); + L.RegFunction("IsNull", IsNull); L.RegFunction("New", _CreateUnityEngine_GameObject); L.RegFunction("__eq", op_Equality); L.RegFunction("__tostring", ToLua.op_ToString); @@ -716,6 +718,23 @@ public class UnityEngine_GameObjectWrap } } + [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] + static int IsNull(IntPtr L) + { + try + { + ToLua.CheckArgsCount(L, 1); + UnityEngine.GameObject obj = (UnityEngine.GameObject)ToLua.CheckObject(L, 1, typeof(UnityEngine.GameObject)); + bool o = obj.IsNull(); + LuaDLL.lua_pushboolean(L, o); + return 1; + } + catch (Exception e) + { + return LuaDLL.toluaL_exception(L, e); + } + } + [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int op_Equality(IntPtr L) {