public override void UpdateCombinedImage(FSNCombinedImage combimg) { if (combimg == null) { return; } var sprdata = combimg.spriteData; var subsprites = sprdata.subSprites; if (subsprites.Length > 0) // 서브 스프라이트가 존재하는 경우 { var sourceUVRect = subsprites[0].sourceUVRect; var vSourceUV = new Vector4() { x = sourceUVRect.xMin, y = sourceUVRect.yMin, z = sourceUVRect.xMax, w = sourceUVRect.yMax }; var targetUVRect = subsprites[0].targetUVRect; var vTargetUV = new Vector4() { x = targetUVRect.xMin, y = targetUVRect.yMin, z = targetUVRect.xMax, w = targetUVRect.yMax }; m_image.material = new Material(m_parentImageModule.combinedImageMaterial); // 조합 이미지 전용 마테리얼로 세팅 //m_image.material = m_parentImageModule.combinedImageMaterial; // 조합 이미지 전용 마테리얼로 세팅 m_image.material.renderQueue = 2450; // 강제 렌더큐 설정 (Depth Write를 작동시키기 위해) //m_matPropBlock = new MaterialPropertyBlock(); m_image.material.SetVector("_SubTexSourceUVs1", vSourceUV); // 서브 이미지 UV값들 보내기 m_image.material.SetVector("_SubTexTargetUVs1", vTargetUV); //m_matPropBlock.SetVector("_SubTexSourceUVs1", vSourceUV); // 서브 이미지 UV값들 보내기 //m_matPropBlock.SetVector("_SubTexTargetUVs1", vTargetUV); } else { // 서브 스프라이트가 없을 땐 일반 마테리얼을 그대로 사용한다. //m_image.material = new Material(m_parentImageModule.imageMaterial); m_image.material = m_parentImageModule.imageMaterial; m_image.material.renderQueue = 2450; // 강제 렌더큐 설정 (Depth Write를 작동시키기 위해) //m_matPropBlock = null; } m_image.texture = sprdata.texture; m_image.uvRect = sprdata.baseUVRect; m_rectTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, sprdata.pixelWidth); m_rectTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, sprdata.pixelHeight); }
/// <summary> /// json 파일을 통해 생성하기 /// </summary> /// <param name="path"></param> /// <returns></returns> public static FSNCombinedImage CreateFromResource(string path) { var res = Resources.Load <TextAsset>(path); if (res) { var combined = new FSNCombinedImage(); var sprdata = new Data(); combined.spriteData = sprdata; var json = new JSONObject(res.text); // JSON 파싱하기 var sprpath = json[c_json_spriteSheet].str; // 스프라이트 시트 var sprsheet = FSNResourceCache.Load <SpriteSheet>(FSNResourceCache.Category.Script, sprpath); var baseimage = json.GetField(c_json_baseSprite).str; // 바탕 이미지 sprdata.SetBaseSprite(sprsheet[baseimage]); json.GetField(c_json_subSprite, (subsprarr) => // 서브 스프라이트 { var list = subsprarr.list; var count = list.Count; for (int i = 0; i < count; i++) { var subspr = subsprarr[i]; var sprname = subspr[c_json_subSprite_name].str; var poslist = subspr[c_json_subSprite_pos].list; sprdata.AddSubSprite(sprsheet[sprname], (int)poslist[0].n, (int)poslist[1].n); } }); sprdata.BuildSubSpriteInfo(); // 서브 스프라이트 데이터 빌드 return(combined); } else { Debug.LogError("[FSNCombinedImage.CreateFromResource] Cannot load " + path); return(null); } }
/// <summary> /// 조합 이미지로 변경 /// </summary> /// <param name="combimg"></param> public abstract void UpdateCombinedImage(FSNCombinedImage combimg);
public override void UpdateCombinedImage(FSNCombinedImage combimg) { throw new System.NotImplementedException(); }
/// <summary> /// json 파일을 통해 생성하기 /// </summary> /// <param name="path"></param> /// <returns></returns> public static FSNCombinedImage CreateFromResource(string path) { var res = Resources.Load<TextAsset>(path); if (res) { var combined = new FSNCombinedImage(); var sprdata = new Data(); combined.spriteData = sprdata; var json = new JSONObject(res.text); // JSON 파싱하기 var sprpath = json[c_json_spriteSheet].str; // 스프라이트 시트 var sprsheet = FSNResourceCache.Load<SpriteSheet>(FSNResourceCache.Category.Script, sprpath); var baseimage = json.GetField(c_json_baseSprite).str; // 바탕 이미지 sprdata.SetBaseSprite(sprsheet[baseimage]); json.GetField(c_json_subSprite, (subsprarr) => // 서브 스프라이트 { var list = subsprarr.list; var count = list.Count; for(int i = 0; i < count; i++) { var subspr = subsprarr[i]; var sprname = subspr[c_json_subSprite_name].str; var poslist = subspr[c_json_subSprite_pos].list; sprdata.AddSubSprite(sprsheet[sprname], (int)poslist[0].n, (int)poslist[1].n); } }); sprdata.BuildSubSpriteInfo(); // 서브 스프라이트 데이터 빌드 return combined; } else { Debug.LogError("[FSNCombinedImage.CreateFromResource] Cannot load " + path); return null; } }
public object LoadResource(string path) { return(FSNCombinedImage.CreateFromResource(path)); }
public override void Initialize() { FSNCombinedImage.InstallLoaders(); // 조합 이미지 관련 초기화 linkedCanvas = ObjectRoot.GetComponent <FSNNewUICanvas>(); }