コード例 #1
0
    private static void AddAutoEffect(TextureEffectDeploy deploy, GameObject model)
    {
        //添加效果
        if (deploy.AutoRotation != null && deploy.AutoRotation.Length > 0)
        {
            //[方向,速度]
            var autoRota = model.AddComponent <AutoRotation>();
            autoRota.RotaFoward = deploy.AutoRotation[0];
            autoRota.TurnSpeed  = deploy.AutoRotation[1];
        }

        if (deploy.AutoScale != null && deploy.AutoScale.Length > 0)
        {
            //[最小,最大,速度]
            var autoScale = model.AddComponent <AutoScale>();
            autoScale.MinScale = deploy.AutoScale[0];
            autoScale.MaxScale = deploy.AutoScale[1];
            autoScale.Speed    = deploy.AutoScale[2];
        }


        if (deploy.AutoGamma != null && deploy.AutoGamma.Length > 0)
        {
            //[最小,最大,速度]
            var autoGamma = model.AddComponent <AutoGamma>();
            autoGamma.MinGamma = deploy.AutoGamma[0];
            autoGamma.MaxGamma = deploy.AutoGamma[1];
            autoGamma.Speed    = deploy.AutoGamma[2];
        }
    }
コード例 #2
0
    private static void CreateNewEffect(int id, int sortingOrder, TextureEffectDeploy deploy, CreatedNotify notify)
    {
        GameSystem.CoroutineStart(TextureUtility.LoadResourceById(deploy.resourceId, spriteList =>
        {
            Holder holder;
            if (!CachePool.TryGetValue(id, out holder))
            {
                holder = new Holder
                {
                    Deploy   = deploy,
                    Resource = spriteList,
                    Queue    = new Queue <TextureEffect>()
                };
                CachePool.Add(id, holder);
            }

            CreateEffectDirect(spriteList, sortingOrder, deploy, effect =>
            {
                notify(effect);
            });
        }));
    }
コード例 #3
0
ファイル: TextureEffect.cs プロジェクト: zhfelon1/th-haruhi
 public virtual void Init(TextureEffectDeploy deploy, List <Sprite> spriteList)
 {
     Deploy     = deploy;
     SpriteList = spriteList;
     ReInit();
 }
コード例 #4
0
    private static void CreateEffectDirect(List <Sprite> spriteList, int sortingOrder, TextureEffectDeploy deploy, Action <TextureEffect> notify)
    {
        var type     = typeof(TextureEffect);
        var resource = spriteList[0];

        var _object = new GameObject("effect_" + deploy.id);

        _object.transform.localScale = deploy.scale * Vector3.one;

        var model = new GameObject("model");

        model.transform.SetParent(_object.transform, false);
        model.AddComponent <MeshFilter>().sharedMesh = GameSystem.DefaultRes.QuadMesh;

        Material material;

        if (!_materialCache.TryGetValue(deploy.id, out material))
        {
            material = new Material(GameSystem.DefaultRes.CommonShader)
            {
                mainTexture = resource.texture
            };
            material.SetFloat("_AlphaScale", deploy.alpha);

            _materialCache[deploy.id] = material;
        }

        var mr = model.AddComponent <MeshRenderer>();

        mr.sharedMaterial = material;


        model.transform.localEulerAngles = new Vector3(0, 0, deploy.rota);

        var sizeX = resource.bounds.size.x;
        var sizeY = resource.bounds.size.y;

        model.transform.localScale = new Vector3(sizeX, sizeY, 1);

        //添加自动效果
        AddAutoEffect(deploy, model);

        var effect = _object.AddComponent(type) as TextureEffect;

        if (!effect)
        {
            Debug.LogError("CreateEffectDirect, Object is null 222");
            Object.Destroy(_object);
        }
        else
        {
            effect.Renderer = mr;
            effect.Renderer.sortingOrder = sortingOrder;
            effect.Init(deploy, spriteList);
        }

        notify(effect);
    }