/// <summary> /// 创建自定义的STGObject /// <para>string customizedName 自定义名称</para> /// <para>posX</para> /// <para>posY</para> /// <para>args...</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int CreateCustomizedSTGObject(ILuaState luaState) { int top = luaState.GetTop(); int numArgs = top - 3; string customizedName = luaState.ToString(-top); float posX = (float)luaState.ToNumber(-top + 1); float posY = (float)luaState.ToNumber(-top + 2); int funcRef = InterpreterManager.GetInstance().GetCustomizedFuncRef(customizedName, eCustomizedType.STGObject, eCustomizedFuncRefType.Init); luaState.RawGetI(LuaDef.LUA_REGISTRYINDEX, funcRef); STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetPosition(posX, posY); luaState.PushLightUserData(effect); // 复制参数 int copyIndex = -numArgs - 2; for (int i = 0; i < numArgs; i++) { luaState.PushValue(copyIndex); } luaState.Call(numArgs + 1, 0); // 返回结果 luaState.PushLightUserData(effect); return(1); }
private void Explode() { STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetSprite("STGEffectAtlas", "TransparentCircle", eBlendMode.SoftAdditive, LayerId.STGNormalEffect, true); effect.SetExistDuration(30); effect.SetPosition(_curPos); effect.SetSize(128, 128); effect.ChangeWidthTo(192, 30, InterpolationMode.Linear); effect.ChangeHeightTo(192, 30, InterpolationMode.Linear); effect.DoFade(30); SoundManager.GetInstance().Play("se_explode", 0.1f); float angle = Random.Range(0f, 360f); List <Color> colorList = new List <Color> { new Color(1, 0, 0), new Color(0, 1, 0), new Color(0, 0, 1) }; for (int i = 0; i < 12; i++) { effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetSprite("STGReimuAtlas", "ReimuAHSCEffect", eBlendMode.SoftAdditive, LayerId.STGNormalEffect, true); effect.SetExistDuration(30); effect.SetPosition(_curPos); effect.DoStraightMove(Random.Range(4f, 6f), i * 30 + angle); int colorIndex = Random.Range(0, 3); effect.SetSpriteColor(colorList[colorIndex].r, colorList[colorIndex].g, colorList[colorIndex].b); effect.DoFade(30); effect.SetSize(128, 128); effect.ChangeWidthTo(64, 30, InterpolationMode.Linear); effect.ChangeHeightTo(64, 30, InterpolationMode.Linear); } }
/// <summary> /// 设置混合模式 /// <para>effect</para> /// <para>blendMode</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetSpriteEffectBlendMode(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-2) as STGSpriteEffect; eBlendMode blendMode = (eBlendMode)luaState.ToInteger(-1); effect.SetBlendMode(blendMode); return(0); }
/// <summary> /// 设置SpriteEffect的尺寸 /// <para>width</para> /// <para>height</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetSpriteEffectSize(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; float width = (float)luaState.ToNumber(-2); float height = (float)luaState.ToNumber(-1); effect.SetSize(width, height); return(0); }
/// <summary> /// 设置SpriteEffect的缩放 /// <para>scaleX</para> /// <para>scaleY</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetSpriteEffectScale(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; float scaleX = (float)luaState.ToNumber(-2); float scaleY = (float)luaState.ToNumber(-1); effect.SetScale(scaleX, scaleY); return(0); }
/// <summary> /// 设置材质的属性 /// <para>spriteEffect</para> /// <para>propertyName 属性名称</para> /// <para>value 属性整型值</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectSetMatInt(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; string propertyName = luaState.ToString(-2); int value = luaState.ToInteger(-1); effect.SetMatInt(propertyName, value); return(0); }
/// <summary> /// 设置材质的属性 /// <para>spriteEffect</para> /// <para>propertyName 属性名称</para> /// <para>value 属性浮点值</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectSetMatFloat(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; string propertyName = luaState.ToString(-2); float value = (float)luaState.ToNumber(-1); effect.SetMatFloat(propertyName, value); return(0); }
/// <summary> /// 设置SpriteEffect的旋转角度 /// <para>effect</para> /// <para>angle 旋转的角度</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetSpriteRotation(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-2) as STGSpriteEffect; float angle = (float)luaState.ToNumber(-1); luaState.Pop(2); effect.SetRotation(angle); return(0); }
/// <summary> /// 执行alpha缓动 /// <para>effect</para> /// <para>[0,1] toAlpha</para> /// <para>int duration</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectChangeAlphaTo(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; float toAlpha = (float)luaState.ToNumber(-2); int duration = luaState.ToInteger(-1); effect.DoTweenAlpha(toAlpha, duration); return(0); }
/// <summary> /// 设置特殊的SpriteEffect /// <para>spriteEffect</para> /// <para>预制体名称</para> /// <para>layerId 层级</para> /// <para>是否缓存</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectSetPefab(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-4) as STGSpriteEffect; string prefabName = luaState.ToString(-3); LayerId layerId = (LayerId)luaState.ToInteger(-2); bool cached = luaState.ToBoolean(-1); effect.SetPrefab(prefabName, layerId, cached); return(0); }
/// <summary> /// 使SpriteEffect在duration帧内旋转 /// <para>旋转速度为rotateAngle</para> /// <para>SpriteEffect</para> /// <para>rotateAngle 旋转角速度</para> /// <para>duration 旋转周期</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectRotate(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; float rotateAngle = (float)luaState.ToNumber(-2); int duration = luaState.ToInteger(-1); luaState.Pop(3); effect.DoRotation(rotateAngle, duration); return(0); }
public static int SpriteEffectChangeHeightTo(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-4) as STGSpriteEffect; float toHeight = (float)luaState.ToNumber(-3); int duration = luaState.ToInteger(-2); InterpolationMode scaleMode = (InterpolationMode)luaState.ToInteger(-1); effect.ChangeHeightTo(toHeight, duration, scaleMode); return(0); }
public static int SetSTGObjectProps(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-6) as STGSpriteEffect; string atlasName = luaState.ToString(-5); string spriteName = luaState.ToString(-4); eBlendMode blendMode = (eBlendMode)luaState.ToInteger(-3); LayerId layerId = (LayerId)luaState.ToInteger(-2); bool cached = luaState.ToBoolean(-1); effect.SetSprite(atlasName, spriteName, blendMode, layerId, cached); return(0); }
/// <summary> /// 创建自机子弹的击中特效 /// </summary> /// <param name="effectParas">击中特效配置参数</param> protected virtual void CreateHitEffect(PlayerBulletHitEffectParas effectParas) { STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetSprite(effectParas.atlasName, effectParas.spriteName, effectParas.blendMode, effectParas.layerId, true); List <float[]> parasList = effectParas.effectParasList; int listCount = parasList.Count; for (int i = 0; i < listCount; i++) { SetSpriteEffectParas(effect, parasList[i]); } }
public override void Clear() { _effect = null; _movementObjectTfList.Clear(); _movementDataList.Clear(); GameObject.Destroy(_masterSparkObject); _masterSparkObject = null; _masterSparkTf = null; _sparkContainerTf = null; _movementBodyTf = null; _movementCount = 0; _colliderRect = null; }
private void UpdateAppearEffect() { _appearEffect.SetPosition(_curPos.x, _curPos.y); float factor = (float)_timeSinceCreated / AppearEffectExistDuration; float scaleX = Mathf.Lerp(_cfg.appearEffectSizeFrom, _cfg.appearEffectSizeTo, factor) * _scaleX; float scaleY = Mathf.Lerp(_cfg.appearEffectSizeFrom, _cfg.appearEffectSizeTo, factor) * _scaleY; _appearEffect.SetScale(scaleX, scaleY); if (_timeSinceCreated >= AppearEffectExistDuration) { //_appearEffect.FinishEffect(); _appearEffect = null; } }
public void PlayGrazeEffect() { if (!_isGrazedDuringFrame) { _isGrazedDuringFrame = true; STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetPrefab("GrazeEffect", LayerId.STGTopEffect, true); effect.SetPosition(_curPos); effect.SetExistDuration(36); float angle = Random.Range(0, 360); effect.DoStraightMove(0.6f, angle); SoundManager.GetInstance().Play("se_graze", 0.05f, false, true); } }
public STGEffectBase CreateEffectByType(EffectType type) { STGEffectBase effect = GetEffectFromPool(type); if (effect == null) { switch (type) { case EffectType.SpriteEffect: effect = new STGSpriteEffect(); break; case EffectType.ShakeEffect: effect = new ShakeEffect(); break; case EffectType.BreakScreenEffect: effect = new STGBreakScreenEffect(); break; case EffectType.BurstEffect: effect = new STGBurstEffect(); break; case EffectType.ChargeEffect: effect = new STGChargeEffect(); break; case EffectType.BulletEliminate: effect = new STGBulletEliminateEffect(); break; case EffectType.EnemyEliminated: effect = new STGEnemyEliminatedEffect(); break; case EffectType.PlayerDeadEffect: effect = new STGPlayerDeadEffect(); break; } } if (effect != null) { effect.Init(); _effectList.Add(effect); _effectsCount++; } return(effect); }
/// <summary> /// 创建生成子弹时候的特效 /// </summary> private void CreateAppearEffect() { if (_cfg.appearEffectSizeFrom == 0) { return; } _appearEffect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; _appearEffect.SetSprite(Consts.STGBulletsAtlasName, _cfg.appearEffectName, _cfg.blendMode, LayerId.EnemyBarrage, true); _appearEffect.SetOrderInLayer(10); _appearEffect.SetPosition(_curPos.x, _curPos.y); _appearEffect.SetScale(_cfg.appearEffectSizeFrom, _cfg.appearEffectSizeFrom); //_appearEffect.DoScaleWidth(_cfg.appearEffectSizeTo, AppearEffectExistDuration, InterpolationMode.Linear); //_appearEffect.DoScaleHeight(_cfg.appearEffectSizeTo, AppearEffectExistDuration, InterpolationMode.Linear); _appearEffect.DoFade(AppearEffectExistDuration); }
/// <summary> /// 根据属性创建指定的SpriteEffect /// <para>atlasName</para> /// <para>spriteName</para> /// <para>cached 是否缓存</para> /// <para>layerId 层级</para> /// <para>在层级中的顺序</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int CreateSpriteEffectWithProps(ILuaState luaState) { string atlasName = luaState.ToString(-6); string spriteName = luaState.ToString(-5); eBlendMode blendMode = (eBlendMode)luaState.ToInteger(-4); LayerId layerId = (LayerId)luaState.ToInteger(-3); bool cached = luaState.ToBoolean(-2); int orderInLayer = luaState.ToInteger(-1); STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetSprite(atlasName, spriteName, blendMode, layerId, cached); effect.SetOrderInLayer(orderInLayer); luaState.PushLightUserData(effect); return(1); }
/// <summary> /// 创建一个精灵特效 /// <para>string effectSpName</para> /// <para>float scaleX</para> /// <para>float scaleY</para> /// <para>float posX</para> /// <para>float posY</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int CreateSpriteEffect(ILuaState luaState) { string effectSpName = luaState.ToString(-5); float scaleX = (float)luaState.ToNumber(-4); float scaleY = (float)luaState.ToNumber(-3); float posX = (float)luaState.ToNumber(-2); float posY = (float)luaState.ToNumber(-1); luaState.Pop(5); STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; effect.SetSprite(effectSpName); effect.SetScale(scaleX, scaleY); effect.SetPosition(posX, posY); luaState.PushLightUserData(effect); return(1); }
/// <summary> /// 设置材质的属性 /// <para>spriteEffect</para> /// <para>propertyName 属性名称</para> /// <para>value 属性颜色值(16进制) 分别对应argb</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SpriteEffectSetMatColor(ILuaState luaState) { STGSpriteEffect effect = luaState.ToUserData(-3) as STGSpriteEffect; string propertyName = luaState.ToString(-2); int value = luaState.ToInteger(-1); int b = value & 0xff; value >>= 8; int g = value & 0xff; value >>= 8; int r = value & 0xff; value >>= 8; int a = value; effect.SetMatColor(propertyName, new Color(r / 256f, g / 256f, b / 256f, a / 256f)); return(0); }
public override void Clear() { if (_appearEffect != null) { _appearEffect.FinishEffect(); _appearEffect = null; } SetOrderInLayer(0); if (_curAlpha != 1 || !_isOriginalColor) { _spRenderer.color = new Color(1, 1, 1, 1); } if (_scaleX != 1 || _scaleY != 1) { _trans.localScale = Vector3.one; } _spRenderer = null; _cfg = null; base.Clear(); }
public override void Start() { _masterSparkObject = ResourceManager.GetInstance().GetPrefab("Prefab/Character/MarisaA", "MasterSpark"); UIManager.GetInstance().AddGoToLayer(_masterSparkObject, LayerId.PlayerBarage); _masterSparkTf = _masterSparkObject.transform; Vector2 playerPos = Global.PlayerPos; Vector3 pos = new Vector3(playerPos.x + _posOffset.x, playerPos.y + _posOffset.y, MasterSparkPosZ); _masterSparkTf.localPosition = pos; Transform tf; for (int i = 0; i < MovementObjectCount; i++) { tf = _masterSparkTf.Find("SparkWave" + i); _movementObjectTfList.Add(tf); } _sparkContainerTf = _masterSparkTf.Find("SparkContainer"); _movementBodyTf = _sparkContainerTf.Find("MovementBody"); // 黑底 _effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect; _effect.SetSprite("ShapeAtlas", "ShapeCircle", eBlendMode.Normal, LayerId.STGBottomEffect, false); _effect.SetSize(0, 0); _effect.SetSpriteColor(0, 0, 0, 1); _effect.ChangeWidthTo(1024, 50, InterpolationMode.EaseInQuad); _effect.ChangeHeightTo(1024, 50, InterpolationMode.EaseInQuad); _effect.SetPosition(playerPos.x, playerPos.y); // 基础属性 _curState = 1; _time = 0; _duration = 30; _isFinish = false; // 震动 ShakeEffect shakeEffect = EffectsManager.GetInstance().CreateEffectByType(EffectType.ShakeEffect) as ShakeEffect; shakeEffect.DoShake(0, 270, 3, 3f, 1.5f, 5); // 音效 SoundManager.GetInstance().Play("se_masterspark", 0.1f, false, true); }
/// <summary> /// 设置spriteEffect的颜色 /// <para>effect</para> /// <para>rValue</para> /// <para>gValue</para> /// <para>bValue</para> /// <para>optional aValue</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetSpriteEffectColor(ILuaState luaState) { int top = luaState.GetTop(); // 检测带不带alpha if (top == 5) { STGSpriteEffect effect = luaState.ToUserData(-5) as STGSpriteEffect; float rValue = (float)luaState.ToNumber(-4); float gValue = (float)luaState.ToNumber(-3); float bValue = (float)luaState.ToNumber(-2); float aValue = (float)luaState.ToNumber(-1); effect.SetSpriteColor(rValue, gValue, bValue, aValue); } else if (top == 4) { STGSpriteEffect effect = luaState.ToUserData(-4) as STGSpriteEffect; float rValue = (float)luaState.ToNumber(-3); float gValue = (float)luaState.ToNumber(-2); float bValue = (float)luaState.ToNumber(-1); effect.SetSpriteColor(rValue, gValue, bValue); } else if (top == 1) { STGSpriteEffect effect = luaState.ToUserData(-2) as STGSpriteEffect; long color = (long)luaState.ToNumber(-1); float bValue = color & 0xff; color >>= 8; float gValue = color & 0xff; color >>= 8; float rValue = color & 0xff; color >>= 8; effect.SetSpriteColor(rValue / 255f, gValue / 255f, bValue / 255f); } return(0); }
public static bool Set(object o, TValue key, ref TValue value) { STGSpriteEffect sprite = (STGSpriteEffect)o; if (key.TtIsString()) { switch (key.SValue()) { #region 基础变量 case "x": { Vector2 pos = sprite.GetPosition(); pos.x = (float)value.NValue; sprite.SetPosition(pos); return(true); } case "y": { Vector2 pos = sprite.GetPosition(); pos.y = (float)value.NValue; sprite.SetPosition(pos); return(true); } case "rot": { sprite.SetRotation((float)value.NValue); return(true); } #endregion #region 运动相关变量 case "v": { sprite.velocity = (float)value.NValue; return(true); } case "vx": { sprite.vx = (float)value.NValue; return(true); } case "vy": { sprite.vy = (float)value.NValue; return(true); } case "vAngle": { sprite.vAngle = (float)value.NValue; return(true); } case "maxV": { sprite.maxVelocity = (float)value.NValue; return(true); } case "acce": { sprite.acce = (float)value.NValue; return(true); } case "accAngle": { sprite.accAngle = (float)value.NValue; return(true); } #endregion #region sprite专属变量 case "orderInLayer": { sprite.SetOrderInLayer((int)value.NValue); return(true); } case "alpha": { sprite.SetSpriteAlpha((float)value.NValue); return(true); } #endregion } } value.SetSValue(string.Format("SetField of userData fail!Invalid key {0} for type {1}", key, typeof(STGSpriteEffect).Name)); return(false); }
protected void SetSpriteEffectParas(STGSpriteEffect effect, float[] paras) { if (paras.Length == 0) { return; } switch ((int)paras[0]) { // 设置位置,参数为增量 case 1: { float dx = paras[1]; float offsetX = paras[2]; float dy = paras[3]; float offsetY = paras[4]; if (offsetX != 0) { dx += Random.Range(-offsetX, offsetX); } if (offsetY != 0) { dy += Random.Range(-offsetY, offsetY); } float sin = Mathf.Sin(_curRotation * Mathf.Deg2Rad); float cos = Mathf.Cos(_curRotation * Mathf.Deg2Rad); float relX = cos * dx - sin * dy; float relY = sin * dx + cos * dy; effect.SetPosition(_hitPos.x + relX, _hitPos.y + relY); break; } // 设置位置,参数为绝对位置 case 2: { float posX = paras[1]; float offsetX = paras[2]; float posY = paras[3]; float offsetY = paras[4]; if (offsetX != 0) { posX += Random.Range(-offsetX, offsetX); } if (offsetY != 0) { posY += Random.Range(-offsetY, offsetY); } effect.SetPosition(posX, posY); break; } // 设置速度,v,dAngle,acce // 即速度,与当前速度方向的差值,加速度 // dAngle为0则表示当前速度方向 case 3: { float velocity = paras[1]; float angle = _curRotation + paras[2]; float acce = paras[3]; effect.DoStraightMove(velocity, angle); effect.DoAcceleration(acce, angle); break; } // 设置速度,v,angle,acce // 即速度,速度方向,加速度 case 4: { float velocity = paras[1]; float angle = paras[2]; float acce = paras[3]; effect.DoStraightMove(velocity, angle); effect.DoAcceleration(acce, angle); break; } // 图像旋转角度 // dRotationAngle,与当前子弹速度方向的差值 case 5: { float angle = _curRotation + paras[1]; effect.SetRotation(angle); break; } // 图像旋转角度 // angle,指定角度 case 6: { float angle = paras[1]; effect.SetRotation(angle); break; } // 旋转 // omega,角速度 case 7: { float omega = paras[1]; effect.DoRotation(omega, -1); break; } // orderInLayer case 9: { int orderInLayer = (int)paras[1]; effect.SetOrderInLayer(orderInLayer); break; } // 设置alpha case 10: { float alpha = paras[1]; effect.SetSpriteAlpha(alpha); break; } // 透明度渐变 // toAlpha,duration case 11: { float toAlpha = paras[1]; int duration = (int)paras[2]; effect.DoTweenAlpha(toAlpha, duration); break; } // 设置颜色 case 12: { float r = paras[1]; float g = paras[2]; float b = paras[3]; effect.SetSpriteColor(r, g, b); break; } // 设置带alpha的颜色 case 13: { float r = paras[1]; float g = paras[2]; float b = paras[3]; float aValue = paras[4]; effect.SetSpriteColor(r, g, b, aValue); break; } // 设置缩放 // scaleX,scaleY case 15: { float scaleX = paras[1]; float scaleY = paras[2]; effect.SetScale(scaleX, scaleY); break; } // 设置scaleX缩放动画 // toScaleX duration case 16: { float toScaleX = paras[1]; int duration = (int)paras[2]; effect.ChangeWidthTo(toScaleX, duration, InterpolationMode.Linear); break; } // 设置scaleY缩放动画 // toScaleY duration case 17: { float toScaleY = paras[1]; int duration = (int)paras[2]; effect.ChangeHeightTo(toScaleY, duration, InterpolationMode.Linear); break; } // 持续时间 case 30: { int duration = (int)paras[1]; effect.SetExistDuration(duration); break; } } }
public static bool Get(object o, TValue key, out TValue res) { STGSpriteEffect sprite = (STGSpriteEffect)o; res = new TValue(); if (key.TtIsString()) { switch (key.SValue()) { #region 基础变量 case "x": { res.SetNValue(sprite.GetPosition().x); return(true); } case "y": { res.SetNValue(sprite.GetPosition().y); return(true); } case "rot": { res.SetNValue(sprite.GetRotation()); return(true); } case "dx": { res.SetNValue(sprite.dx); return(true); } case "dy": { res.SetNValue(sprite.dy); return(true); } case "SetPos": { res.SetClCsValue(_funcSetPos); return(true); } case "GetPos": { res.SetClCsValue(_funcGetPos); return(true); } #endregion #region 运动相关变量 case "v": { res.SetNValue(sprite.velocity); return(true); } case "vx": { res.SetNValue(sprite.vx); return(true); } case "vy": { res.SetNValue(sprite.vy); return(true); } case "vAngle": { res.SetNValue(sprite.vAngle); return(true); } case "maxV": { res.SetNValue(sprite.maxVelocity); return(true); } case "acce": { res.SetNValue(sprite.acce); return(true); } case "accAngle": { res.SetNValue(sprite.accAngle); return(true); } #endregion #region STGObject类专属变量 case "SetSprite": { res.SetClCsValue(_funcSetSprite); return(true); } case "SetColor": { res.SetClCsValue(_funcSetColor); return(true); } case "SetSize": { res.SetClCsValue(_funcSetSize); return(true); } case "ChangeAlphaTo": { res.SetClCsValue(_funcChangeAlphaTo); return(true); } case "SetBlendMode": { res.SetClCsValue(_funcSetBlendMode); return(true); } case "alpha": { res.SetNValue(sprite.alpha); return(true); } case "SetPrefab": { res.SetClCsValue(_funcSetPrefab); return(true); } case "SetMaterialFloat": { res.SetClCsValue(_funcSetMaterialFloat); return(true); } case "SetMaterialInt": { res.SetClCsValue(_funcSetMaterialInt); return(true); } case "SetMaterialColor": { res.SetClCsValue(_funcSetMaterialColor); return(true); } #endregion #region 运动类专属方法 ISTGMovable case "SetV": { res.SetClCsValue(_funcSetV); return(true); } case "SetAcce": { res.SetClCsValue(_funcSetAcce); return(true); } case "SetStraightParas": { res.SetClCsValue(_funcSetStraightParas); return(true); } case "SetPolarParas": { res.SetClCsValue(_funcSetPolarParas); return(true); } case "MoveTo": { res.SetClCsValue(_funcMoveTo); return(true); } case "MoveTowards": { res.SetClCsValue(_funcMoveTowards); return(true); } #endregion #region IAttachable case "AttachTo": { res.SetClCsValue(_funcAttachTo); return(true); } case "SetRelativePos": { res.SetClCsValue(_funcSetRelativePos); return(true); } #endregion #region ITaskExecuter case "AddTask": { res.SetClCsValue(_funcAddTask); return(true); } #endregion } } res.SetSValue(string.Format("GetField from userData fail!Invalid key {0} for type {1}", key, typeof(STGSpriteEffect).Name)); return(false); }