C# 通过商店更换玩家精灵
我正在尝试创建一个商店,在那里你可以从游戏中的货币购买不同的玩家精灵。(商店是一个独立于关卡的场景)我被告知使用scriptableobject是一个不错的选择,因此我做了以下几点:C# 通过商店更换玩家精灵,c#,unity3d,C#,Unity3d,我正在尝试创建一个商店,在那里你可以从游戏中的货币购买不同的玩家精灵。(商店是一个独立于关卡的场景)我被告知使用scriptableobject是一个不错的选择,因此我做了以下几点: [CreateAssetMenu(fileName = "New Sprite", menuName = "Player Sprites")] public class PlayerSprites : ScriptableObject { public string spriteName; publ
[CreateAssetMenu(fileName = "New Sprite", menuName = "Player Sprites")]
public class PlayerSprites : ScriptableObject
{
public string spriteName;
public int cost;
public Sprite sprite;
}
我刚刚添加到播放器脚本中
public SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
公共喷壶喷壶;
void Start()
{
spriteender=GetComponent();
}
我真的不知道从这里到哪里去。。。当按下精灵按钮时,如何将精灵从不同场景渲染到播放器上。。。非常感谢您的帮助,谢谢 虽然你的问题很模糊,我也不知道你到目前为止尝试了什么: 现在,您需要为每个
Sprite
项目提供一个ScriptableObject
。。。我认为那不是你想要的。您应该使用一个ScriptableObject
存储所有Sprite
项的信息
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "Assets/New Store", menuName = "Sprites-Store")]
public class SpriteStoreContainer : ScriptableObject
{
public List<StoreSpriteItem> SpriteItems = new List<StoreSpriteItem>();
// you can/should also implement methods here as in any usual component!
}
回到团结中:
实例化ScriptableObject
资产:
转到项目视图(资产)->在菜单中单击鼠标右键->单击创建->单击精灵商店
这将在资产
下创建一个名为新店
(.asset)的新资产
SpriteItems
,其中Size=0
要创建元素,只需增加
大小
值并按enter键(小心:Unity不会询问您是否更改此值=>注意不要在以后意外减少此值来删除项目)
现在您可以调整这些精灵项的所有信息using UnityEngine;
public class ScriptThatUsesStore : MonoBehaviour
{
public SpriteStoreContainer Store;
public void DoSomthingWithStore()
{
// example: just get the first List element
Sprite someSprite = Store.SpriteItems[0].sprite;
}
}
然后访问其中的数据。尽管我强烈建议您在
ScriptableObject
中实现一些方法,例如BuyItem
,GetSprite
等非常感谢您的详细回答!帮了很多忙:)很高兴我能帮上忙!
using UnityEngine;
public class ScriptThatUsesStore : MonoBehaviour
{
public SpriteStoreContainer Store;
public void DoSomthingWithStore()
{
// example: just get the first List element
Sprite someSprite = Store.SpriteItems[0].sprite;
}
}