zip压缩加载测试
This commit is contained in:
124
Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs
Normal file
124
Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs
Normal file
@@ -0,0 +1,124 @@
|
||||
using System;
|
||||
using Stary.Evo;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using YooAsset;
|
||||
|
||||
namespace Main
|
||||
{
|
||||
public class ZoneController : MonoBehaviour, IController
|
||||
{
|
||||
public ZoneType zoneType;
|
||||
public BoxCollider ZoneCollider { get; set; }
|
||||
public PointController[] PointControllerEntities { get; set; }
|
||||
|
||||
private IUnRegister _onTriggerEnterUnRegister;
|
||||
|
||||
private Image _image;
|
||||
public async void Init(ZoneData zoneData)
|
||||
{
|
||||
|
||||
name = zoneData.name;
|
||||
zoneType = Enum.Parse<ZoneType>(name);
|
||||
_image=transform.Find("Canvas/Image").GetComponent<Image>();
|
||||
//根据数据设置zone 碰撞盒
|
||||
transform.localPosition = zoneData.position;
|
||||
transform.localRotation = Quaternion.Euler(zoneData.rotation);
|
||||
transform.localScale = zoneData.scale;
|
||||
ZoneCollider = this.transform.GetOrAddComponent<BoxCollider>();
|
||||
|
||||
_onTriggerEnterUnRegister = this.OnTriggerEnterEvent(OnZoneTriggerEnterEvent);
|
||||
|
||||
PointControllerEntities = new PointController[zoneData.pointDatas.Count];
|
||||
|
||||
var package = YooAssets.TryGetPackage("Main");
|
||||
|
||||
var spriteHandle = package.LoadAssetAsync<Sprite>($"Sprites_{zoneData.spriteName}" );
|
||||
await spriteHandle.Task;
|
||||
_image.sprite = spriteHandle.GetAssetObject<Sprite>();
|
||||
_image.SetNativeSize();
|
||||
|
||||
var pointHandle = package.LoadAssetAsync<GameObject>(R.Res.Main.prefabs.guideball_point_prefab);
|
||||
await pointHandle.Task;
|
||||
for (int i = 0; i < zoneData.pointDatas.Count; i++)
|
||||
{
|
||||
|
||||
PointData currentPointData = zoneData.pointDatas[i];
|
||||
var pointGo = pointHandle.InstantiateSync(this.transform);
|
||||
PointController pointController = pointGo.GetOrAddComponent<PointController>();
|
||||
PointControllerEntities[i] = pointController;
|
||||
pointController.Init(this, currentPointData);
|
||||
|
||||
|
||||
this.GetSystem<IDigitalHuman>().AddPointData(new DigitalHumanPointData()
|
||||
{
|
||||
Name = zoneData.pointDatas[i].name,
|
||||
pointTransform = pointGo.transform
|
||||
});
|
||||
}
|
||||
// this.RegisterEvent(zoneType, OpenPoint);
|
||||
}
|
||||
|
||||
|
||||
public void OnZoneTriggerEnterEvent(Collider collider)
|
||||
{
|
||||
Debug.Log("OnZoneTriggerEnterEvent");
|
||||
if (collider.gameObject.CompareTag("MainCamera"))
|
||||
{
|
||||
_onTriggerEnterUnRegister.UnRegister();
|
||||
OpenPoint();
|
||||
this.GetSystem<IZoneSystem>().OpenCurrentZone(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenPoint()
|
||||
{
|
||||
foreach (var controller in PointControllerEntities)
|
||||
{
|
||||
controller.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenPoint(PointController controller)
|
||||
{
|
||||
foreach (var controllerEntity in PointControllerEntities)
|
||||
{
|
||||
if (controllerEntity == controller)
|
||||
{
|
||||
controller.gameObject.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
controllerEntity.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void ColsePoint()
|
||||
{
|
||||
foreach (var controller in PointControllerEntities)
|
||||
{
|
||||
controller.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnZoneTriggerExitEvent(Collider collider)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnPointTriggerEnterEvent(Collider collider)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnPointTriggerExitEvent(Collider collider)
|
||||
{
|
||||
}
|
||||
|
||||
public IArchitecture GetArchitecture()
|
||||
{
|
||||
return MainArchitecture.Interface;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user