提交 e7a40bde 编写于 作者: L linxinfa

APP退出拦截,弹出提示框

上级 d302a50d
......@@ -44,7 +44,7 @@
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_QualitySettingsWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_RectTransformWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_MaterialWrap.cs" />
<Compile Include="Assets\Scripts\Framework\HotUpdate\Downloader.cs" />
<Compile Include="Assets\Scripts\Logic\HotUpdate\Downloader.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_InputFieldWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Core\LuaMethodCache.cs" />
<Compile Include="Assets\Scripts\Logic\Test.cs" />
......@@ -289,7 +289,7 @@
<Compile Include="Assets\Scripts\3rd\LitJson\IJsonWrapper.cs" />
<Compile Include="Assets\LuaFramework\Scripts\Utility\LuaHelper.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Core\LuaFunction.cs" />
<Compile Include="Assets\Scripts\Framework\HotUpdate\HotUpdater.cs" />
<Compile Include="Assets\Scripts\Logic\HotUpdate\HotUpdater.cs" />
<Compile Include="Assets\LuaFramework\ToLua\BaseType\UnityEngine_LightWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Reflection\LuaField.cs" />
<Compile Include="Assets\Scripts\Framework\UGUIExpand\GuideMask\EventPermeate.cs" />
......@@ -299,6 +299,8 @@
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_Events_UnityEvent_stringWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_UI_InputField_OnChangeEventWrap.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\UnityEngine_Events_UnityEventBaseWrap.cs" />
<Compile Include="Assets\Scripts\Logic\AppQuitDefend\AppQuitDefend.cs" />
<Compile Include="Assets\LuaFramework\ToLua\Source\Generate\AppQuitDefendWrap.cs" />
<None Include="Assets\RawAssets\GuideMask\Shader\GuideMask.shader" />
<None Include="Assets\output_log.txt" />
<None Include="Assets\Scripts\代码目录说明.txt" />
......
......@@ -10,4 +10,5 @@
<item id="9" editorPath="UIPrefabs/Common/FlyTips.prefab" version="2021/11/4" desc="冒提示语" />
<item id="10" editorPath="UIPrefabs/GameHall/GameHallPanel.prefab" version="2021/11/4" desc="大厅界面" />
<item id="11" editorPath="UIPrefabs/Common/GuideMask.prefab" version="2021/11/5" desc="新手引导遮罩" />
<item id="12" editorPath="UIPrefabs/Common/TipsDlg.prefab" version="2021/11/5" desc="提示框" />
</items>
\ No newline at end of file
此差异已折叠。
fileFormatVersion: 2
guid: 28440e80fc7fc47489d3c059f5629308
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -184,6 +184,7 @@ namespace LuaFramework
_GT(typeof(I18N)),
_GT(typeof(LanguageMgr)),
_GT(typeof(GuideMaskBhv)),
_GT(typeof(AppQuitDefend)),
};
private static Type NonEdtType(string className)
......
fileFormatVersion: 2
guid: b24e0e74a13bb47438ed58af1763a2c8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
-- App退出逻辑,弹出挽留提示框
AppQuitLogic = AppQuitLogic or {}
local this = AppQuitLogic
function AppQuitLogic.Defend()
TipsDlg.Create("提示", "真的要退出吗?", "确定", function (okBtn)
AppQuitDefend.DoQuit()
end, "再玩一下", function (cancleBtn)
end)
end
\ No newline at end of file
fileFormatVersion: 2
guid: 28a63a04b759fb14ba9ba1a648140f1d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -14,8 +14,12 @@ Network/C2SProcess.lua
Network/S2CProcess.lua
Network/Network.lua
-- App退出
Logic/AppQuit/AppQuitLogic.lua
-- 冒提示语
View/Common/FlyTips.lua
-- 提示框
View/Common/TipsDlg.lua
-- 新手引导遮罩
View/Common/GuideMask.lua
......
......@@ -3,16 +3,18 @@
FlyTips = FlyTips or {}
FlyTips.__index = FlyTips
function FlyTips.Create(contentText)
local self = {}
function FlyTips.Create(content)
local self = {
content = content
}
self.gameObject = UITool.Instantiate(GlobalObjs.s_topPanel, 9)
setmetatable(self, FlyTips)
local binder = self.gameObject:GetComponent("PrefabBinder")
self:SetUi(binder, contentText)
self:SetUi()
end
function FlyTips:SetUi(binder, contentText)
UGUITool.SetText(binder, "tipsText", contentText)
function FlyTips:SetUi()
local binder = self.gameObject:GetComponent("PrefabBinder")
UGUITool.SetText(binder, "tipsText", self.content)
local aniEventTrigger = binder:GetObj("aniEventTrigger")
aniEventTrigger.aniEvent = function ()
......
-- 提示框
TipsDlg = TipsDlg or {}
TipsDlg.__index = TipsDlg
function TipsDlg.Create(title, content, okText, okBtnCb, cancleTxt, cancleBtnCb)
local self = {
title = title,
content = content,
okText = okText,
okBtnCb = okBtnCb,
cancleTxt = cancleTxt,
cancleBtnCb = cancleBtnCb
}
self.gameObject = UITool.Instantiate(GlobalObjs.s_topPanel, 12)
setmetatable(self, TipsDlg)
self:SetUi()
end
function TipsDlg:SetUi()
local binder = self.gameObject:GetComponent("PrefabBinder")
-- 标题
UGUITool.SetText(binder, "titleText", self.title)
-- 内容
UGUITool.SetText(binder, "contentText", self.content)
-- 确定按钮文本
UGUITool.SetText(binder, "okText", self.okText or "")
-- 确定按钮回调
UGUITool.SetButton(binder, "okBtn", function (btn)
if not LuaUtil.IsNilOrNull(self.okBtnCb) then
self.okBtnCb()
end
LuaUtil.SafeDestroyObj(self.gameObject)
end)
-- 取消按钮文本
UGUITool.SetText(binder, "cancleText", self.cancleTxt or "")
-- 取消按钮回调
local cancleBtn = UGUITool.SetButton(binder, "cancleBtn", function (btn)
if not LuaUtil.IsNilOrNull(self.cancleBtnCb) then
self.cancleBtnCb()
end
LuaUtil.SafeDestroyObj(self.gameObject)
end)
LuaUtil.SafeActiveObj(cancleBtn, not LuaUtil.IsNilOrNull(self.cancleBtnCb))
end
fileFormatVersion: 2
guid: 575cb3185279eee42a2931e5c95482ba
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
//this source code was auto-generated by tolua#, do not modify it
using System;
using LuaInterface;
public class AppQuitDefendWrap
{
public static void Register(LuaState L)
{
L.BeginClass(typeof(AppQuitDefend), typeof(System.Object));
L.RegFunction("Init", Init);
L.RegFunction("DontQuit", DontQuit);
L.RegFunction("DoQuit", DoQuit);
L.RegFunction("New", _CreateAppQuitDefend);
L.RegFunction("__tostring", ToLua.op_ToString);
L.EndClass();
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int _CreateAppQuitDefend(IntPtr L)
{
try
{
int count = LuaDLL.lua_gettop(L);
if (count == 0)
{
AppQuitDefend obj = new AppQuitDefend();
ToLua.PushObject(L, obj);
return 1;
}
else
{
return LuaDLL.luaL_throw(L, "invalid arguments to ctor method: AppQuitDefend.New");
}
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int Init(IntPtr L)
{
try
{
ToLua.CheckArgsCount(L, 0);
AppQuitDefend.Init();
return 0;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int DontQuit(IntPtr L)
{
try
{
ToLua.CheckArgsCount(L, 0);
bool o = AppQuitDefend.DontQuit();
LuaDLL.lua_pushboolean(L, o);
return 1;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int DoQuit(IntPtr L)
{
try
{
ToLua.CheckArgsCount(L, 0);
AppQuitDefend.DoQuit();
return 0;
}
catch(Exception e)
{
return LuaDLL.toluaL_exception(L, e);
}
}
}
fileFormatVersion: 2
guid: 4c31aeed5c26a464fa026c5edbb61010
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -25,6 +25,7 @@ public static class LuaBinder
I18NWrap.Register(L);
LanguageMgrWrap.Register(L);
GuideMaskBhvWrap.Register(L);
AppQuitDefendWrap.Register(L);
L.RegFunction("MyEventHandler", MyEventHandler);
L.BeginModule("UnityEngine");
UnityEngine_ComponentWrap.Register(L);
......
fileFormatVersion: 2
guid: 0b0aeda6bc00cd948b3159026c838220
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DlgShow
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.3
value: {x: 1.1, y: 1.1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.36666667
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: aniNode
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 309885790
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.36666667
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.3
value: 1.1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.36666667
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path: aniNode
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.3
value: 1.1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.36666667
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path: aniNode
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.3
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.36666667
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path: aniNode
classID: 224
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
fileFormatVersion: 2
guid: 740fbf3b17b0e504582e3cae63bf8589
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DlgShow
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 458512496100523566}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1107 &458512496100523566
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 4348382054847861064}
m_Position: {x: 200, y: 0, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 4348382054847861064}
--- !u!1102 &4348382054847861064
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DlgShow
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 740fbf3b17b0e504582e3cae63bf8589, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
fileFormatVersion: 2
guid: 9124ea6006df7e3419169ad67d4b7962
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
......@@ -142,7 +142,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
......
fileFormatVersion: 2
guid: 0cf40a67f661f16459c187a729d5232e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
/// <summary>
/// App退出时进行拦截,弹出提示框
/// </summary>
public class AppQuitDefend
{
public static void Init()
{
Application.wantsToQuit += DontQuit;
}
public static bool DontQuit()
{
LuaCall.CallFunc("AppQuitLogic.Defend");
return false;
}
public static void DoQuit()
{
Application.wantsToQuit -= DontQuit;
Application.Quit();
}
}
fileFormatVersion: 2
guid: 048bd1424a1e863478fe282f71a59a63
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -18,6 +18,8 @@ public class StartUp : MonoBehaviour
// 启动游戏
StartGame();
});
}
private void StartGame()
......@@ -27,6 +29,9 @@ public class StartUp : MonoBehaviour
{
LuaCall.CallFunc("Main.Init");
LuaCall.CallFunc("Main.Start");
// 监听关闭游戏事件
AppQuitDefend.Init();
});
}
......@@ -95,6 +100,5 @@ public class StartUp : MonoBehaviour
AppFacade.Instance.FixedUpdateEx();
}
private NetworkMsgEventRegister m_networkMsgEventRegister;
}
......@@ -5,7 +5,6 @@ Framework目录: 框架代码
Debug: 调试相关
Encrypt: 加密
Event: 事件
HotUpdate: 热更新
I18N: 国际化语言封装
Network: 网络封装
Panel: 界面管理封装
......@@ -19,4 +18,5 @@ Framework目录: 框架代码
Version: 版本管理
3rd: 第三方库代码
Logic: 游戏逻辑代码
HotUpdate: 热更新
View: 游戏界面代码
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册