王琪诚

【任务】TAPD#

功能详情 朋友圈json加载
配置文件 否
提交作者 QiCheng.Wang
评审人员
... ... @@ -947,7 +947,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 800, y: -490}
m_SizeDelta: {x: 1160, y: 180}
m_SizeDelta: {x: 1160, y: 160}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &637033553
MonoBehaviour:
... ... @@ -2319,7 +2319,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &1347929217
RectTransform:
m_ObjectHideFlags: 0
... ... @@ -2361,7 +2361,6 @@ MonoBehaviour:
danmakuPanel: {fileID: 1475588209}
danmakuPrefab: {fileID: 7870940708185808822, guid: 7b836662dd2b34183bc4e6c9d87f4d26, type: 3}
speed: 100
maxLines: 5
--- !u!1 &1447955073
GameObject:
m_ObjectHideFlags: 0
... ... @@ -2529,7 +2528,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -4.7269, y: -245}
m_AnchoredPosition: {x: -4.7269, y: 283}
m_SizeDelta: {x: 1500, y: 300}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1475588210
... ...
... ... @@ -10,7 +10,6 @@ public class DanmakuManager : MonoBehaviour
public RectTransform danmakuPanel; // 弹幕pannel
public GameObject danmakuPrefab;
public float speed = 100f; // px/sec
public int maxLines = 5; // 最多几行
private int currentLine = 0;
public void AddDanmaku(string text,int direction)
... ...
... ... @@ -23,6 +23,7 @@ public class MomentItem : MonoBehaviour
public Transform imageGrid; // 父对象,用于图片缩略图排列
public GameObject imagePrefab; // 小图预制体
public Image bigImageInit; //大图初始化
public Transform videoGrid; // 父对象
public GameObject videoPrefab; // 视频预制体
... ... @@ -218,9 +219,12 @@ public class MomentItem : MonoBehaviour
}
Image img = imgObj.GetComponent<Image>();
//缩略图和大图不一样,第一次LoadImage只为了预下载大图片
StartCoroutine(ImageLoader.LoadImage(url, img));
//缩略图和大图不一样,第1次LoadImage只为了预下载大图片
StartCoroutine(ImageLoader.LoadImage(AddSuffixBeforeExtension(url,"-s"), img));
StartCoroutine(ImageLoader.LoadImage(url, bigImageInit));
bigImageInit.sprite = null;
Transform child = imgObj.transform.GetChild(0);
child.DOScale(1.5f, 2f).SetLoops(-1, LoopType.Yoyo).SetEase(Ease.InOutSine);
... ...
... ... @@ -13,8 +13,16 @@ public class MomentManager : MonoBehaviour
void Start()
{
TextAsset jsonText = Resources.Load<TextAsset>("Jsons/friend_data");
MomentList data = JsonUtility.FromJson<MomentList>(jsonText.text);
StartCoroutine(JsonLoaderManager.LoadJson("https://h5.edcc.cn/FriendCircle/json/friend_data.json","Jsons/friend_data",data =>
{
Debug.Log("最终获取到的 JSON 数据:\n" + data);
InitFriendCircle(data);
}));
}
private void InitFriendCircle(string jsonText)
{
MomentList data = JsonUtility.FromJson<MomentList>(jsonText);
StartCoroutine(ImageLoader.LoadImage(data.cover, coverImage));
StartCoroutine(ImageLoader.LoadImage(data.bottom, bottomImage));
... ... @@ -60,10 +68,9 @@ public class MomentManager : MonoBehaviour
//设置外层ScrollContent层高度
RectTransform scrollContentRt = contentParent.parent.GetComponent<RectTransform>();
scrollContentRt.sizeDelta =
new Vector2(scrollContentRt.sizeDelta.x, coverHeight + momentListHeight + bottomHeight);
scrollContentRt.sizeDelta = new Vector2(scrollContentRt.sizeDelta.x, coverHeight + momentListHeight + bottomHeight);
}
private void OnApplicationQuit()
{
ClearTemporaryCache();
... ...
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class JsonLoaderManager : Singleton<JsonLoaderManager>
{
public static IEnumerator LoadJson(string remoteUrl,string localUrl,System.Action<string> onJsonReady)
{
string json = null;
bool loadedFromWeb = false;
using (UnityWebRequest uwr = UnityWebRequest.Get(remoteUrl))
{
uwr.timeout = 5; // 设置超时时间
yield return uwr.SendWebRequest();
if (uwr.result == UnityWebRequest.Result.Success)
{
json = uwr.downloadHandler.text;
loadedFromWeb = true;
Debug.Log("✅ 从网络加载成功");
}
else
{
Debug.LogWarning("⚠️ 网络加载失败,尝试加载本地 JSON:" + uwr.error);
}
}
if (!loadedFromWeb)
{
TextAsset localJson = Resources.Load<TextAsset>(localUrl);
if (localJson != null)
{
json = localJson.text;
Debug.Log("📁 从本地加载 JSON 成功");
}
else
{
Debug.LogError("❌ 本地 JSON 不存在!");
}
}
onJsonReady?.Invoke(json);
}
}
\ No newline at end of file
... ...
fileFormatVersion: 2
guid: bdb69f00adae4726a321eebf82ac9b79
timeCreated: 1750834988
\ No newline at end of file
... ...
... ... @@ -104,7 +104,7 @@
},
{
"username": "祝融号",
"avatarUrl": "https://h5.edcc.cn/FriendCircle/image/head-video.png",
"avatarUrl": "https://h5.edcc.cn/FriendCircle/image/head.png",
"text": "忍不住发了好几条朋友圈,你们有看到吗?我还能原地转弯呢。",
"from": "来自:火星",
"time": "2021年6月11日",
... ...
... ... @@ -1002,6 +1002,7 @@ RectTransform:
- {fileID: 5137047804386020533}
- {fileID: 3638516876483047710}
- {fileID: 954098158191977059}
- {fileID: 2685931706963452372}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
... ... @@ -1026,6 +1027,7 @@ MonoBehaviour:
contentText: {fileID: 4430445110796385188}
imageGrid: {fileID: 1041260462946003438}
imagePrefab: {fileID: 6223382467879224884, guid: ca325bf8ed54c41479e9c7d18e457e1e, type: 3}
bigImageInit: {fileID: 2628341785345091319}
videoGrid: {fileID: 8815226098748290278}
videoPrefab: {fileID: 646672757163800049, guid: bd2d13416179847beac4e59cd608113c, type: 3}
from: {fileID: 3009102025949839682}
... ... @@ -1054,7 +1056,6 @@ MonoBehaviour:
danmakuPanel: {fileID: 954098158191977059}
danmakuPrefab: {fileID: 7870940708185808822, guid: 7b836662dd2b34183bc4e6c9d87f4d26, type: 3}
speed: 100
maxLines: 5
--- !u!222 &8920725948406434288
CanvasRenderer:
m_ObjectHideFlags: 0
... ... @@ -1367,6 +1368,81 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &4336015732213254032
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2685931706963452372}
- component: {fileID: 8974834196693201696}
- component: {fileID: 2628341785345091319}
m_Layer: 5
m_Name: ImageInit
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &2685931706963452372
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4336015732213254032}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5112969456787946611}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8974834196693201696
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4336015732213254032}
m_CullTransparentMesh: 1
--- !u!114 &2628341785345091319
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4336015732213254032}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4531716383457095180
GameObject:
m_ObjectHideFlags: 0
... ...