我正在尝试创建一个负责创建和显示不同 Sprite 的对象,因此我想以编程方式直接访问 Assets / Sprite ,而不是将 Sprite 拖放到该对象下的层次结构中。
有一种方法可以通过编程方式创建一个新的 Sprite 并分配我在 Assets 文件夹中的内容吗?
我还想要一种数据结构,在游戏开始时加载一些图像,一个数组或字典或类似的东西,这样我就可以根据某些情况更改我需要显示的图像。但是让我感到困惑的是,因为我是 Unity 的新手,所以如何使用 Assets 文件夹以编程方式引用 Sprite 来创建 Sprite 。
随进度编辑:
我创建了一个像这样的 Sprite 数组:
public Sprite[] mySprites;
在 Unity 中,我手动在数组中添加了 Sprite (我只是将 png 拖到变量数组中)所以实际上在这个对象中我有一个组件,这个数组充满了 Sprite
在组件内部我也这样做了:
public SpriteRenderer renderer;
renderer = transform.GetComponent<SpriteRenderer>();
renderer.sprite = (Sprite)mySprites [0];
在运行游戏之前我没有遇到任何错误,然后 Sprite 未分配,我得到了这个:
“取消引用时 PPtr 转换失败!从 Texture2D 转换到 Sprite!”
即使没有转换(Sprite)我也遇到了这个错误,顺便说一句,我不知道他为什么要告诉我有关 Texture2D 的信息,因为所有东西都被设置为 sprite
最佳答案
以编程方式创建 Sprite 可能有点太难了。您可能需要在内存中创建一个纹理,填充数据,然后将该纹理写入磁盘。之后,您应该能够使用 C# 的文件或 Unity 的 WWW.LoadFromCacheOrDownload 读取它。 .
下面是动态创建纹理的方法:http://answers.unity3d.com/questions/9919/how-do-i-create-a-texture-dynamically-in-unity.html
要以编程方式加载您的 Sprite (虽然不是动态创建的 Sprite ),它们需要位于名为 Resources 的文件夹下(这是一个 special folder )。
即假设您在名为 Sprites 的文件夹下有一个名为 MySprite.png 的 Sprite ,该文件夹位于名为 Resources 的文件夹下。然后你会像这样加载它:
renderer.sprite = Resources.Load<Sprite>("Sprites/MySprite");
(注意如何不包括 Resources 文件夹和 Sprite 的扩展名)
您可以在 Loading Resources at Runtime 中找到更多详细信息文档。
PPtr cast failed when dereferencing!
我做了一些搜索并从 this forum post 中找到了答案当您拥有一种类型的列表然后将其更改为另一种类型时,通常会发生这种情况。 IE。如果 mySprites 在某个时候是 GameObject[] 并且您链接了一堆 Sprites,然后将其更改为 Sprite[]。因为它特别说明了 Texture2D,所以我假设您的 Sprites(或其中一些)的导入设置设置为 Texture 而不是 Sprite:
此外,all MonoBehaviours have already a field named renderer , 类型为 Renderer .我建议您重命名该字段以避免混淆,除非您仅将其用作示例。
关于c# - Unity 4.3 - 2D,如何以编程方式将 Sprite 分配给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430503/
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中