public void OnClickClaimBtn() { if(!m_AchievementItemData.IsAchieved || m_AchievementItemData.IsRewardClaimed) { return; } var userAchievementData = UserDataManager.Instance.GetUserData<UserAchievementData>(); if(userAchievementData == null) { Logger.LogError("UserAchievementData does not exist."); return; } var achievementData = DataTableManager.Instance.GetAchievementData(m_AchievementItemData.AchievementType); if(achievementData == null) { Logger.LogError("AchievementData does not exist."); return; } var userAchievedData = userAchievementData.GetUserAchievementProgressData(m_AchievementItemData.AchievementType); if(userAchievedData != null) { var userGoodsData = UserDataManager.Instance.GetUserData<UserGoodsData>(); if(userGoodsData != null) { userAchievedData.IsRewardClaimed = true; userAchievementData.SaveData(); m_AchievementItemData.IsRewardClaimed = true; switch (achievementData.AchievementRewardType) { case GlobalDefine.RewardType.Gold: userGoodsData.Gold += achievementData.AchievementRewardAmount; var goldUpdateMsg = new GoldUpdateMsg(); goldUpdateMsg.isAdd = true; Messenger.Default.Publish(goldUpdateMsg); userAchievementData.ProgressAchievement(AchievementType.CollectGold, achievementData.AchievementRewardAmount); break; case GlobalDefine.RewardType.Gem: userGoodsData.Gem += achievementData.AchievementRewardAmount; var gemUpdateMsg = new GemUpdateMsg(); gemUpdateMsg.isAdd = true; Messenger.Default.Publish(gemUpdateMsg); break; default: break; } userGoodsData.SaveData(); } } } 이 부분에서 8:17초 부분 보시면 보상 받고 바로 UI Sort가 호출되는게 OnAchievementProgressed가 호출 돼서 그런거 같은데 저 OnClickClaimBtn 함수 내에선 찾아봐도 OnAchievementProgressed가 호출 될 수 있는 부분이 안보여서 질문드립니다. 제 동작 역시 보상을 받고 Sort는 일어나지 않습니다. 저 userGoodsData.SaveData(); 밑에 var achievementProgressMsg = new AchievementProgressMsg(); Messenger.Default.Publish(achievementProgressMsg); 를 호출해야하나요..? 다시 확인해보니 골드업적이 깨지기 전이면 골드 업적 갱신부분에서 Sort가 호출되서 그러는거 같은데 이미 골드 업적을 깬 상태면 Sort가 발생하지 않습니다.
안녕하세요, 강의 잘 보고있습니다. 제가 1인 게임개발자를 꿈꾸며 godot로 처음 코딩을 접하고 게임을 만들어보고 있는데 너무 막막하네요.. 혹시 공부를 어떻게 하셨는지 여쭤봐도 될까요? 유니티나 c# 등을 먼저 좀 체계적으로 배운 후에 고도를 다시 보는 게 좋을까요? 혹시 고도 사용자 커뮤니티가 있는지도 궁금합니다ㅠㅠ
Invalid assignment of property or key 'global_position_x' with value of type 'int' on a base object of type 'Area2D ( card.gd )'. 다운 받은 소스를 실행 하면 잘 되는데, 처음부터 한단계씩 입력하다가, create_card() 부분에서 error 가 뜹니다. func create_card(): for x_pos in COL: for y_pos in ROW: #print("%d,%d" % [x_pos,y_pos]) var new_card = card_scene.instantiate() new_ card.global _position_x = x_pos new_ card.global _position_y = y_pos add_child(new_card)
훌륭한 강좌 감사합니다. 덕분에 잘 보고 재밌게 배우고 있습니다! [적 캐릭터 파괴시 이벤트 수신하기] 강좌 중 self._on_target_destroyed 대신 _on_target_destroyed 라고 써도 똑같이 잘 동작하는데요 self 를 써줘야 하는 이론적 배경을 알고 싶습니다~!
안녕하세요. 프로젝트를 진행하면서 문제 발생했을 때 git 소스 코드만 보고 찾기 어려움이 있습니다.. 커리큘럼을 보니 콘텐츠 개발은 완료된 것 같고 출시 준비만 남은 것같은데 혹시 전체 프로젝트 소스에 대해서 받을 수 있을까요?? 가능하시다면 링크를 주셔도 가능하고 이메일로 첨부해주셔도 됩니다! 이메일:guddn1234k@naver.com
안녕하세요. 혹시 캐릭터의 위치를 서로 바꿀때 클라이언트의 서버 스포너위치에 옮겨질 캐릭터의 잔상이 남는데 무엇이 문제인가요? hero쪽에 if (IsServer) transform.parent = target.transform; 이 구문을 빼면 잔상이 없어지긴 합니다.