少年修仙传客户端代码仓库
hch
2025-06-12 204ef05a831c9484e2abc561d27ecbff7c797453
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using UnityEngine;
using System.IO;
 
namespace H2Engine
{
    public class Bhv_TransferPoint : MonoBehaviour
    {
        [HideInInspector]
        public int effectID = -1;
        public string stateNameFront = "Fly_500";
        public float flyTimeFront = 2;
        public string stateNameBack = "Fly_500";
        public float flyTimeBack = 2;
 
#if UNITY_EDITOR
 
        [HideInInspector]
        public CapsuleCollider capsuleCollider;
 
        public GameObject Effect;
 
        public void Save(BinaryWriter bw)
        {
            bw.Write(effectID);
            bw.Write(stateNameFront);
            bw.Write(flyTimeFront);
            bw.Write(stateNameBack);
            bw.Write(flyTimeBack);
            bw.Write((float)System.Math.Round(transform.position.x, 2));
            bw.Write((float)System.Math.Round(transform.position.y, 2));
            bw.Write((float)System.Math.Round(transform.position.z, 2));
            bw.Write((float)System.Math.Round(capsuleCollider.radius, 2));
        }
 
        public void SaveJson(System.Text.StringBuilder stringBuilder)
        {
            stringBuilder.Append("{");
            stringBuilder.Append("\"effectID\":").Append(effectID).Append(",");
            stringBuilder.Append("\"stateNameFront\":\"").Append(stateNameFront).Append("\",");
            stringBuilder.Append("\"flyTimeFront\":").Append(flyTimeFront).Append(",");
            stringBuilder.Append("\"stateNameBack\":\"").Append(stateNameBack).Append("\",");
            stringBuilder.Append("\"flyTimeBack\":").Append(flyTimeBack).Append(",");
            stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(",");
            stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(",");
            stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)).Append(",");
            stringBuilder.Append("\"r\":").Append((float)System.Math.Round(capsuleCollider.radius, 2));
            stringBuilder.Append("}");
        }
 
        public void LoadJson(LitJson.JsonData json)
        {
            effectID = (int)json["effectID"];
            stateNameFront = json["stateNameFront"].ToString();
            flyTimeFront = (int)json["flyTimeFront"];
            stateNameBack = json["stateNameBack"].ToString();
            flyTimeBack = (int)json["flyTimeBack"];
            float _pX = Bhv_MapData.GetJsonFloat(json["px"]);
            float _pY = Bhv_MapData.GetJsonFloat(json["py"]);
            float _pZ = Bhv_MapData.GetJsonFloat(json["pz"]);
            transform.position = new Vector3(_pX, _pY, _pZ);
            float _r = Bhv_MapData.GetJsonFloat(json["r"]);
            capsuleCollider.radius = _r;
            if (EffectConfig.Has(effectID))
            {
                var _prefab = InstanceResourcesLoader.LoadEffect(effectID);
                Effect = Instantiate(_prefab);
                Effect.transform.SetParent(transform);
                Effect.transform.localPosition = Vector3.zero;
                Effect.transform.localScale = Vector3.one;
                Effect.transform.rotation = Quaternion.identity;
            }
        }
 
        public void Load(BinaryReader br)
        {
            effectID = br.ReadInt32();
            stateNameFront = br.ReadString();
            flyTimeFront = br.ReadSingle();
            stateNameBack = br.ReadString();
            flyTimeBack = br.ReadSingle();
            float _x = br.ReadSingle();
            float _y = br.ReadSingle();
            float _z = br.ReadSingle();
            transform.position = new Vector3(_x, _y, _z);
            float _r = br.ReadSingle();
            capsuleCollider.radius = _r;
            if (EffectConfig.Has(effectID))
            {
                var _prefab = InstanceResourcesLoader.LoadEffect(effectID);
                Effect = Instantiate(_prefab);
                Effect.transform.SetParent(transform);
                Effect.transform.localPosition = Vector3.zero;
                Effect.transform.localScale = Vector3.one;
                Effect.transform.rotation = Quaternion.identity;
            }
        }
 
        public void Export(BinaryWriter bw)
        {
            Save(bw);
        }
 
#endif
    }
}