我正在创建一个多人游戏,包括具有不同值(例如健康,伤害)的不同英雄。我最初从数据库中获取这些值并将它们存储到 struct 。
{% if user.is_authenticated %}
<li class="dropdown">
<a data-toggle="dropdown" class="dropdown-toggle" href="accueil">
<span class="glyphicon glyphicon-baby-formula"></span> Actes <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Fiches individuelles</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="{% url "home" %}">Accueil des fiches individuelles</a></li>
</ul>
</li>
</li>
在结构中存储值并创建字典(int,my-struct)以获得之前完全正常的值。
我已经到了想要为此结构中的每个英雄 存储特定精灵的地步。 我考虑通过Resources.Load获取这些精灵(我猜这是最简单的方法)
-> I have little to no knowledge about structs
-> and got told this is probably a performance loss / bad approach
这是我提供结构并在字典中添加条目的方式。
public struct data
{
public string Name;
public int ID, hp, dmg, range, magazin;
public float tbtwb, rltime;
public Sprite heroSprite; //Structs don't seem to like Unity's sprite type
}
public Dictionary<int, data>_HeroDict;
我的问题:我无法在结构中存储精灵,也不知道变通方法。
我被告知我可以/应该使用类而不是结构,但我也不能存储Sprite,不知道为什么。
你能指出我正确的方向并给我一个示例方法吗?
提前致谢,Csharpest
答案 0 :(得分:1)
你不能在结构或类中存储精灵。精灵是Unity内部的一个类。您可以存储的内容是精灵的引用,这正是您声明时所发生的事情
{{1}}
了解如何存储精灵也很重要。精灵是一种资产。在构建游戏时,Unity会将资产序列化为包。当你导入一个精灵时,Unity会做一些魔术,然后就像你导入它时一样把它还给你。这就是为什么你不能在你的代码/自定义文件中存储sprite的原因。即使你确实找到了某种方法,但这样做是非常不合适的,因为Unity执行了许多你不知道的优化。
有了这些知识,您可以从Unity的资产数据库中检索精灵(或任何资产):
在你的情况下,你最好的选择是给每个英雄一些ID,并用它作为名称从资源中加载它。
我还应该提到另外两件事:一,除非你绝对知道你在做什么,否则总是使用班级。你提出问题的方式表明你不这样做,所以改用一个班级。更多阅读:Design guidelines from MSDN
二,您的代码看起来像是来自C ++背景,并且您试图以某种方式使用您现有的知识和在Unity内部做事的旧方法。别。你应该真正做的是为每个英雄创建一个预制件并从资源中加载它们。