unity 3D RPG高级教程(十一)

本教程详细介绍了Unity 3D RPG游戏开发的高级技巧,包括完成背包系统、3D武器制作、对话逻辑、对话UI面板设置以及创建对话和任务的NPC。通过实例讲解了如何实现物品拖拽、3D武器建模、对话逻辑设计、UI布局等内容。
摘要由CSDN通过智能技术生成

目录

声明

1.Complete Inventory 完成背包

2.制作3D武器 及 在游戏中的使用

 3.Dialogue Logic 对话系统的逻辑

4.Dialogue Canvas 对话的UI面板设置

5..创建对话&任务的 NPC

声明

本教程学习均来自U3D中文课堂麦扣老师

1.Complete Inventory 完成背包

完成背包系统最后一个人物,保存背包的数据,另外实现面板的拖拽:

InventoryManager:

    //TODO:最后添加模板用于保存数据
    [Header("Inventory Data")]
    public InventoryData_SO InventoryData;
    public InventoryData_SO inventoryTemplate;
    public InventoryData_SO actionData;
    public InventoryData_SO actionTemplate;
    public InventoryData_SO equipmentData;
    public InventoryData_SO equipmentTemplate;

    protected override void Awake()
    {
        base.Awake();
        //拿到初始数据
        if (inventoryTemplate != null)
        {
            InventoryData = Instantiate(inventoryTemplate);
        }
        if (actionTemplate != null)
        {
            actionData = Instantiate(actionTemplate);
        }
        if (equipmentTemplate != null)
        {
            equipmentData = Instantiate(equipmentTemplate);
        }
    }

    private void Start()
    {
        LoadData();//加载背包数据
    }

    public void SaveData()//保存背包数据
    {
        SaveManager.Instance.Save(InventoryData, InventoryData.name);
        SaveManager.Instance.Save(actionData, actionData.name);
        SaveManager.Instance.Save(equipmentData, equipmentData.name);
    }

    public void LoadData()//加载背包数据
    {
        SaveManager.Instance.Load(InventoryData, InventoryData.name);
        SaveManager.Instance.Load(actionData, actionData.name);
        SaveManager.Instance.Load(equipmentData, equipmentData.name);
    }
    

SceneController:

    IEnumerator Transition(string sceneName,TransitionDestination.DestinationTag destinationTag)//传送目标场景、目标点
    {
        //TODO:保存数据
        SaveManager.Instance.SavePlayerData();//保存Player数据
        InventoryManager.Instance.SaveData();//保存背包数据

        ...
        }
    }
    IEnumerator LoadLevel(string scene)//加载场景
    {
            ...

            //保存数据
            SaveManager.Instance.SavePlayerData();
            InventoryManager.Instance.SaveData();//保存背包数据
            ...
        }
    }

 

现在就能保存背包数据了

接下来实现拖拽面板的方法:

 

 DragPanel:

using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DragPanel : MonoBehaviour, IDragHandler
{
    RectTransform rectTransform;
    Canvas canvas;

    private void Awake()
    {
        rectTransform = GetComponent<RectTransform>();
        canvas = InventoryManager.Instance.GetComponent<Canvas>();
    }
    public void OnDrag(PointerEventData eventData)
    {
        rectTransform.anchoredPosition += eventData.delta/canvas.scaleFactor;
    }
}

现在实现拖拽面板显示在最上方:

</

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网传资源,如有侵权请联系/留言,资源过大上传乃是下载链接的ZIP文件。 目录: 1.1设计原则 d0 Q1 ?: \. V; J) v$ s 2.2单例(1)1 Z9 V$ \+ H7 T' u$ } 3.2单例(2) 4.2单例(3) 5.2单例(4) 6.3观察者模式和代理模式(1). z8 d6 d. Z% S 7.3观察者模式和代理模式(2); C. B/ {" F1 W/ C 8.3观察者模式和代理模式(3)$ Z( }% \4 M( L$ D- Y$ X3 M 9.4 中介者建造者模式(1)7 M+ {$ r, }: j3 y8 K- e8 W) _/ W9 O) z 10.4 中介者建造者模式(2)" T+ r( s4 V6 c5 u- K, p 11.4 中介者建造者模式(3) 12.4 中介者建造者模式(4)( j% Y# r8 @/ a4 q% [ 13.5门面,组合模式(1)" `9 c; V, \9 c3 O 14.5门面,组合模式(2) 15.5门面,组合模式(3)5 o6 J: f4 p/ Z9 v8 @7 c 16.1http www 封装(1) 17.1http www 封装(2) 18.1http www 封装(3)/ X, m# ^$ N$ ?5 l6 b 19.1http www 封装(4)" ~9 M3 I: S/ | 20.1http www 封装(5)" N& V; e5 s; B+ D; g$ j1 M 21.1http www 封装(6) 22.1http www 封装(7) 23.2音效模块封装(1)( P3 K6 n# @% q2 g 24.2音效模块封装(2)/ q3 C8 t4 `9 c0 x2 i! K) g! s 25.2音效模块封装(3); V0 M# o( L# q0 h/ t" K- K 26.2音效模块封装(4)/ K/ e. E, d, n9 B 27.2音效模块封装(5) 28.2音效模块封装(6)3 _. j2 V. M N3 c 29.2音效模块封装(7)) ~0 H! h% l. t! `- F 30.3UI 模块封装(1); \1 _3 ~9 N$ |% @* s 31.3UI 模块封装(2)" q; A/ `6 c1 Z3 v; U% P 32.3UI 模块封装(3)' j" P7 P! i' I4 B" G: g; | 33.3UI 模块封装(4) 34.3UI 模块封装(5) 35.3UI 模块封装(6)4 I q4 N* [+ }1 ` 36.3UI 模块封装(7) 37.4背包类UI封装(1)5 V; R' F2 Z2 N6 Z2 l 38.4背包类UI封装(2) 39.4背包类UI封装(3) 40.4背包类UI封装(4) 41.4背包类UI封装(5) 42.4背包类UI封装(5)# G9 ~) O, A) c# I2 R 43.5UI实例1- `8 J/ R) j) S) U 44.5UI实例2 45.5UI实例3( c; L5 @; c" a* r$ i' _' _ 46.6Easytouch 封装(1)4 ^7 z Z' p0 |5 E5 ^ 47.6Easytouch 封装(2)- U6 k7 a7 Z4 y# I) { 48.6Easytouch 封装(3) 49.6Easytouch 封装(4) 50.6Easytouch 封装(5)' w& ]1 F' O1 p6 w I 51.6Easytouch 封装(6)( B! K9 q3 }9 T0 c0 Z7 J7 f 52.7小地图 封装(1). k ^* ]1 W+ q 53.7小地图 封装(2) 54.8阴阳师画符实现(1). V5 y$ T- s3 l' V" r5 c+ S" e6 a 55.8阴阳师画符实现(2)4 [3 d& B3 ^. }+ S! J 56.8阴阳师画符实现(3)- S2 u) X" ~/ L% g 57.8阴阳师画符实现(4)$ B: G; A/ T2 L" [ 58.8阴阳师画符实现(5)+ I3 I7 U# I3 f% h4 y/ [: X8 N% I 59.8阴阳师画符实现(6) 60.9魔兽争霸3小地图实现(1) 61.9魔兽争霸3小地图实现(2)1 z! b. F. v4 e 62.9魔兽争霸3小地图实现(3)0 E3 r7 M# k1 U. X' ~1 [: [$ m 63.10有限状态机实现(1) 64.10有限状态机实现(2)' B1 Z& r. r# n 65.10有限状态机实现(3) 66.10有限状态机实现(4)& g+ n/ v6 s, l$ R; j 67.10有限状态机实现(5) 68.10有限状态机实现(6)& E" `$ K! |( a9 c 69.10有限状态机实现(7)+ Y2 p* a2 h& y4 h- Q& v& k( s 70.1矩形攻击(1) 71.1矩形攻击(2) 72.1矩形攻击(3)# n9 h& W1 I9 G, ~. a 73.2伞形 攻击 74.3实战框架搭建(1)# _, b) S8 |$ T& R+ z# u- j 75.3实战框架搭建(2) 76.3实战框架搭建(3) 77.4相机封装及easytouch(1) 78.4相机封装及easytouch(2) 79.4相机封装及easytouch(3)4 i! [: O' p7 K; ` 80.5玩家控制fsm(1)) @1 u2 u1 s* Y- v; g4 D8 k9 r' i$ W 81.5玩家控制fsm(2) 82.5玩家控制fsm(3)% A4 V6 A! j5 H, W2 b. x 83.5玩家控制fsm(4) 84.6玩家控制逻辑梳理 85.7Npc封装(1) 86.7Npc封装(2)7 f6 _6 Y6 y3 H/ H9 @ 87.7Npc封装(3) 88.7Npc封装(4)/ g# z) M: d% W( D. A4 B4 s+ ~ 89.8Npc与ui交互(1) 90.8Npc与ui交互(2) 91.8Npc与ui交互(3). Q% d7 o" k4 N& s6 s; P7 D1 A 92.8Npc与ui交互(4) 93.9Npc模块封装(1); I( S) ? J7 M4 G4 X 94.9Npc模块封装(2)4 n+ Z3 s6 ~* W5 b! o; F- k0 U 95.9Npc模块封装(3)
网传资源,如有侵权请联系/留言,资源过大上传乃是下载链接的ZIP文件。 目录: 1.Animal1 2.Animal2& ]9 p, D+ }, l6 e" U4 [+ F! R+ \4 I 3.Animal3 4.Animal4 5.Twist1+ T4 z* ?, N/ s$ ^* p* R 6.Twist2 7.Twist37 `* }8 p$ `6 y1 ^ 8.Twist4* o3 O) i) b6 X4 w5 U( l: M9 x 9.AssetBundle 原理1 10.AssetBundle 原理2 11.AssetBundle 原理3) _3 K- H5 u8 y# K. } 12.AssetBundle 原理4 13.AssetBundle初识1 14.AssetBundle初识2 15.AssetBundle初识3- c. d4 {3 z- Z3 y. P1 Y# M 16.byte操作1! p1 X1 p$ A& P o% J8 j- F! E" E 17.byte操作2$ {, e5 X* |2 y3 f: R 18.byte操作3 19.C#基础1. Z6 R8 o; w. I1 p$ i 20.C#基础2 21.C#基础3) B: I6 B! g/ A4 I$ {" X 22.C#基础41 V& X! B$ K' m# ^3 k# Z 23.oop1 24.oop2/ x! i8 b* a+ `* |# \7 e1 v 25.oop33 s) }. f3 d" d4 A5 h9 ]9 }: T8 { 26.oop4 27.方法调用1! Y' N, n, \+ y+ ~1 D, b7 {9 C 28.方法调用2 29.方法调用3 30.方法调用4 31.WWW1 32.WWW21 o! W# Q/ r& y7 z& K 33.WWW3, z4 u/ m B& s2 D0 j8 d4 Y 34.WWW4; Y" S6 M7 {6 q! a' e 35.贪吃蛇1# _6 O" {. y/ | 36.贪吃蛇2 37.贪吃蛇3 38.Buider1- @' a5 p7 H' y6 `/ K) R 39.Buider2' `. w5 j8 g8 q) W 40.Buider3 41.Buider4 42.CameraView1 43.CameraView2 44.CameraView3; b# }8 D) I4 J( O 45.Combine1 46.Combine25 L) `& E3 C# u2 ` 47.Combine3 48.设计模式01 49.设计模式02. }3 ~# Y' W A* L { 50.设计模式03 51.设计模式04 52.设计原则1 53.设计原则2 54.设计原则3 55.Frame01 56.Frame02 57.Frame03 58.Frame04 59.Frame056 m. o( _0 U9 T0 f8 t 60.Frame06 61.Frame07- u, ?- z" E7 l! q 62.Frame081 `# W$ g% p7 d* x. D 63.Frame099 ]/ l# D& S' _! l6 R( K4 h% V 64.LuaFrame010 p2 j* t+ c: C+ E' V 65.LuaFrame02* Y2 @# ?+ ]1 U' y @8 I: ^ 66.LuaFrame032 L: ]* ^, X4 o1 b1 P9 o" V 67.LuaFrame04 68.LuaFrame051 ?$ x3 B* \9 }+ B4 m, {9 U 69.LuaFrame06 70.LuaFrame07 71.Fsm1 72.Fsm2 73.Fsm30 e; n' F* t, z L4 U) K 74.Fsm4 75.lua01 76.lua02; h$ V% |, x2 S3 Z7 r 77.lua03 78.lua04 79.lua053 s/ q! c4 V1 a 80.lua06 81.lua07" q- j" }2 O( h- {/ b 82.tolua 使用1 83.tolua 使用25 ?7 L3 r/ X* p4 s' b* B 84.tolua1 85.tolua2 86.tolua3 87.UIEasyTouch1 88.UIEasyTouch2" a+ ~- \( u; f 89.UIEasyTouch3 m9 d( x1 d$ j3 }, j6 |; i 90.UIEasyTouch4% h) d% N! G! A% A% z; X 91.矩形攻击1 92.矩形攻击27 i6 z0 P, K3 I7 o3 d4 {: U 93.矩形攻击3 94.矩形攻击4! H7 w7 C" t1 U6 \) @ 95.矩形攻击5 96.TCP 沾包 拆包问题1/ t) X8 ?4 r% _! d1 a 97.TCP 沾包 拆包问题2 98.TCP 沾包 拆包问题39 A/ [; B/ H6 |1 _3 ]- K( K 99.TCP 沾包 拆包问题41 ~- }" G& k! a5 b 100.TCP 沾包 拆包问题5 101.tcp11 V) C2 ^" L3 i" P 102.tcp22 M. @1 }- P& h2 i4 H 103.tcp3 104.protobuffer1' o) E) N$ i" U/ m 105.protobuffer21 V" C9 y, F, ~3 n& H 106.protobuffer3 107.protobuffer4 108.UDP014 S8 r! X* {& o: i 109.UDP02 110.UDP032 b* _4 X% a; P. N" X. }' Y( }( B 111.UDP04 112.UDP05, g C8 F( M$ o$ D 113.UDP06& i. i- o( z8 h8 e' V3 }, J 114.UDP07 115.UDP086 ?4 S/ `! h# ]( s6 f$ N9 d 116.更新 M层 数据1 117.更新 M层 数据2 118.更新 M层 数据3: `- m) J7 D! X5 @. \) T 119.LitMap16 Q8 F' i, Q C2 M 120.LitMap21 ]3 u3 F6 z' X/ l* O5 u0 ~2 a 121.LitMap3) U) a& k; v8 x3 H8 ~9 z 122.LitMap47 d5 w1 |0 L) d1 u- c 123.Painter1* {7 f6 f% w0 d, V 124.Painter2 125.Painter3 126.Painter41 x0 {2 ?. F/ ~. s' @ 127.UIFrame01 128.UIFrame022 K- d6 D$ ^3 N3 f6 q r) d( e 129.UIFrame032 Y3 A, `! T q. ]5 |1 g' E z4 r1 R+ C 130.UIFrame04 131.UIFrame05 132.UIFrame062 R- |& e z; u 133.UIFrame07 134.UIFrame08 135.UIFrame096 k9 R4 `# o# S. w8 S 136.UIFrame10& |* r5 P, [5 C) q 137.Audio1 138.Audio2/ D- x4 J6 e0 B8 J0 P 139.Audio3' b5 c. |. B" _5 ? X/ H 140.www1 141.www2 142.www3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值