首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我在我的预制板上有单独的脚本,当我想让它们引用不同的对象时,它们都在做同样的事情

您提到的情况听起来像是您的脚本在预制板上实例化时没有正确地引用各自的对象,导致它们执行相同的操作。这通常是因为脚本中的对象引用是静态的,而不是动态地根据预制板的实例来设置。

基础概念

在Unity或其他游戏引擎中,预制板(Prefab)是一种可以重复使用的游戏对象模板。脚本通常会附加到这些预制板上,以便控制预制板的行为。如果脚本中的对象引用是硬编码的,那么所有的预制板实例都会引用相同的对象。

解决方法

为了避免这种情况,您需要在脚本中使用动态引用,这样每个预制板实例都可以引用其自己的对象。以下是一些可能的解决方案:

1. 使用公共变量并在编辑器中分配

在脚本中声明一个公共变量,然后在Unity编辑器中为每个预制板实例分配不同的对象。

代码语言:txt
复制
public class MyScript : MonoBehaviour
{
    public GameObject targetObject; // 在Unity编辑器中为每个预制板分配不同的对象

    void Start()
    {
        // 使用targetObject进行操作
    }
}

2. 使用标签或层来查找对象

您可以在运行时通过标签或层来查找预制板实例应该引用的对象。

代码语言:txt
复制
public class MyScript : MonoBehaviour
{
    void Start()
    {
        GameObject targetObject = GameObject.FindGameObjectWithTag("TargetTag"); // 查找具有特定标签的对象
        // 使用targetObject进行操作
    }
}

3. 在实例化预制板时传递参数

如果您是通过脚本实例化预制板的,可以在实例化时传递所需的对象引用。

代码语言:txt
复制
public class PrefabSpawner : MonoBehaviour
{
    public GameObject prefab;
    public GameObject[] targetObjects;

    void Start()
    {
        foreach (GameObject targetObject in targetObjects)
        {
            Instantiate(prefab, transform.position, Quaternion.identity, transform).GetComponent<MyScript>().SetTargetObject(targetObject);
        }
    }
}

public class MyScript : MonoBehaviour
{
    private GameObject targetObject;

    public void SetTargetObject(GameObject obj)
    {
        targetObject = obj;
    }

    void Start()
    {
        // 使用targetObject进行操作
    }
}

应用场景

这些解决方案适用于任何需要在预制板实例之间区分对象引用的情况,例如:

  • 游戏中的多个角色需要控制不同的NPC。
  • 不同的环境元素需要响应不同的事件。
  • 多个UI元素需要引用不同的数据源。

优势

  • 提高了预制板的灵活性和可重用性。
  • 减少了硬编码引用导致的错误和维护成本。
  • 使得预制板的行为可以根据实例的不同而有所不同。

通过上述方法,您可以确保每个预制板实例都有其独立的对象引用,从而执行不同的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

我们问了Yann LeCun等16个顶级数据科学家,这是他们给数据新人的建议

你必须真正喜欢某件事情,愿意花很长一段时间来琢磨它。还有,保持一定的怀疑。我喜欢博士生的一个原因是——五年的时间足以让你有一个发现,让你认识到你一路上做错的所有事情。...对你来说很棒的是,能理智地反复思考“冷聚变”然后意识到“哦,我真的搞砸了”,从而犯下一系列错误并解决它们。 我认为攻读博士学位的过程,特别是做研究时,确实能让你对那些看起来理所当然的事情有所怀疑。...当我开始的时候,我尝试了很多阅读,但我认为这并没有什么帮助,直到你真正使用代码和数据来理解它的工作原理,以及它是如何运行的。 当人们将其呈现在书本中时,这一切都很美好。在现实生活中,事实并非如此。...我最喜欢贝叶斯理论的一点在于我能够在不同的轴上单独进行计算。当然,它们不能够完全独立,但是它们近乎于独立,你就能够充分利用这一点。...当我观察诸如深度学习,或者基于LASSO的线性回归系统的算法时,(也就是最近火爆的机器学习理论),它们实际上就是在单独处理一个轴,折叠了另一个轴。

30620

技术扶贫大佬 Anthony Fu 最新文章

几天后,当最初的兴奋开始消退时,你开始意识到它也意味着这么多的责任和其他你从未想过的事情。尽管我在大学期间一直努力进入开源,但当我最终踏入它时,我意识到我是多么的没有准备。...我仍然记得当我告诉我的朋友我的项目上有几百颗星星,我正在对世界产生一些影响时我是多么自豪。 一旦你达到这些目标,事情开始变得“平常”。然后你就会开始期待更多,设定更高的目标。...当爱好变成工作时,你失去了选择何时做什么的自由。以前,你会把业余爱好作为工作后的放松,但现在当你想用业余爱好放松时,它们变成了工作。 我很幸运,软件开发是一个大领域,有很多不同的事情可以做。...我也喜欢玩独立游戏,虽然我一直在考虑认真开发一些游戏——但那是另一个故事了——至少现在我仍然有一些方法来逃避,当我真的想远离代码时。 我可能太喜欢编程了,所以我对这个没有强烈的感受。...结合起来,它们使我在做一些需要中长期努力的事情时很容易感到沮丧。 例如,写作。我不擅长写作,而且我真的不喜欢写作。文档、博客文章、教程和演讲——都需要大量的时间,而且,我必须做的事情。

1K10
  • 【微服务】复杂系统:微服务与人类

    关键是它们实际上是两个系统,它们都是复杂的。他们都以有趣的方式相互交流,我认为我们需要更深入地讨论和研究。 微服务系统 当我们谈论驯服这些系统的复杂性时,我的思维模式是这分为三个粗略的阶段。...显然,在组织心理学方面有很多研究。还有其他一些领域也涉及到具体方面。例如,人为因素研究人为错误与环境之间的相互作用。你可能会想,我在做什么,让人们更容易慢慢地进行更改?我有什么系统?...同样重要的是要指出,不同的人受到不同事物的驱动,或者这些事物的不同组合。我认为,真正了解我们的组织,而不仅仅是推动一件事情,也是非常有帮助的。这些只是我认为我们可以学习的领域的例子。...我想我想让你们了解的一件主要事情是,从我的角度来看,微服务系统,是的,它们可以是超级复杂的。如果你有成百上千的微服务,它们可能很难解释。然而,正确的选择不是说“它们太复杂了,我不会走那条路。”...我认为,当你也在观察你的组织的生产力时,有很多代理指标,人们会发现它们有很多缺点。我明白为什么。比如代理指标,比如提交了多少代码,或者我们能以多快的速度完成代码审查之类的事情?

    31820

    写给精明Java开发者的测试技巧

    接下来我会给你几个小建议,它们可以让你编写测试变得更容易。那会帮助你减少脆弱的测试,并保证应用程序更加健壮。 与此同时,如果你的答案是 “不,我不编写测试。”...我们遵循了AAA模式,并断言了一些发生了的事情——那么哪里错了? 首先,我们看到这个测试的名字:testFoo,它并没有真正告诉我们这个测试在做什么事情,并且没有匹配任何一个我们在检查的断言。...同样将实例变量重构成静态变量也是很自然的,这样它们就可以只针对每一个测试类声明一次——再一次从测试中移除重复代码。...尽管在做出如上重构后,代码会变得更加“整洁”,但这些单元测试作为一个单独的部分会变得更难读懂。...希望你能够希望我们讨论过的这些原则,并且能够看到它们是如何潜移默化地让你热爱编写单元测试。是的,我是说“热爱”,因为我相信编写单元测试是高品质软件的基本要求。

    2.1K10

    .NET GC - 我们为GC加上了DPAD功能

    但这需要记录,以记住段中间的哪些部分被解密,所以当我们想用它们来分配对象时,我们需要重新提交它们。而现在,我们已经进入了区域的概念,也就是让更小的内存量被GC单独操作。...而当我们在形成插头时,我们已经失去了这些信息。我们可以在更大的颗粒度上跟踪这些信息。但你猜怎么着,这基本上就像区域一样!因为我们想把这些信息划分到不同的区域。...当我们做标记时,我们确切地知道每个区域上有多少存活下来的东西--当我们标记每个对象时,我们跟踪我们需要把存活下来的字节归于哪个区域。所以我们知道有多少存活是由卡片标记完成的。...这比我们以前用分段做的有限的降级要灵活得多。而当我们在GC结束时对区域进行线程化处理时,我们只需要将它们线程化到它们所分配的区域。....NET也在做类似的事情,不过我也不敢肯定,那么region能为我们带来什么呢,有得也有失: 通常情况下会有更少的内存占用,特殊情况下更多的内存占用。

    42730

    Java之父接受Evrone专访:您需要的软件可靠性越高,静态类型语言的帮助就越大

    我一生中的大部分时间都是作为一名软件工程师度过的,对我来说,最不令人满意的消磨时间的方式就是寻找在奇怪的时间发生的晦涩的错误。我能做的任何事情都可以让错误在它们浪费我的时间之前消失,这是一件好事。...因此,当我们查看 JavaScript 和 Python 等动态类型语言时,它们没有足够的推理框架来解决这个问题,因为它们不一定知道任何东西的类型;他们只是在猜测。...如果您正在做诸如数据库本身或主要存储服务之类的事情,您真的非常关心。所以这一切都取决于手头的任务。...当我们谈论不同的语言时,在您个人看来,现在教新软件开发人员的最佳语言是什么,作为他们的第一语言?也许在研究生院或大学。 James:我显然有偏见。Java 已经以这种方式成功使用了很长时间。...在这个学期,你有 5 个不同的程序语言的 5 个作业,这让人们习惯于快速学习它们,因为它们实际上并没有什么不同,并让他们思考哪些更好。

    58730

    深度好文 | JavaScript 疲劳终极指南:我们行业的真相

    正如 Kent Beck 说的“TDD 减少了恐惧”,因为它能够指导你的开发节奏,允许你慢慢地逐步解决你的问题,一步一个脚印,一次解决一个问题。当我们要使用新的技术时,这样做同样也会减少恐惧。...这样做的结果就是污染了全局命名空间,当一个脚本依赖另一个脚本时,很难合理地将它们整合起来。...这就是我们在计算机科学中一直在做的事情。我们使用低级抽象,并在其上构建更多的抽象。我们应该更多考虑的是,我们的软件应该如何运行,而不是怎么让它运行,这样的话,才能更高效。...我们现在可用的技术其实在过去都早已被发明出来了。当然,它们特性不同,名字不同,但是,本质上它们都是相同的。...城市里的人们进进出出,他们要做的是让城市随着时间的流逝有机地成长、适应。他们必须做好应对变化的准备。 同样的事情也发生在软件方面。

    26810

    云原生关乎文化,而不是容器

    如果我把它拿去,把它关了,然后再启动,运行结果跟之前也是一样的。这是对云上服务的一个基本要求。” 有了这些不同的定义,难怪我们在做 Cloud Native 的时候,并不能完全确定我们要做的是什么。...“我们到底想实现什么?” 这是一个非常重要的问题。当我们在思考技术选择和技术风格的时候,我们要从 “我做 Cloud Native 是因为别人都在做退到思考我到底想解决什么问题?”...当我可以使用别人的数据中心时,我为什么要这么做呢?” 在自己的数据中心和别人的数据中心之间形成成本节约的原因是,自己的数据中心必须为最大需求储备足够的硬件。...微服务环境 通常情况下,促使人们对目标产生一些困惑的原因之一是,我们有一种自然的倾向,即看到其他人做着奇妙的事情,并想效仿他们。我们想自己去做那些奇妙的事情,而没有真正思考我们的环境和它们是否适合。...解决的办法是,要么决定领域真的很大,然后合并微服务,要么做更深层次的领域建模,尝试把对象模型解开,变成不同的边界上下文。

    50340

    每位前端开发者都应该知道的方法论:JavaScript 中的 DILOS 原则

    让你的站点预加载所有内容,不要搞什么 JS 脚本按需加载,这样初始加载速度就会慢如蜗牛啦。 写代码的时候把宇宙毁灭时的需求都想好,然后提前写好对应的逻辑,反正你迟早用得上嘛。...怎么让人犯迷糊怎么来,需要代码的时候复制粘贴过来就行。 理想情况下,我们的代码流只有 1 个对象。在非常大的代码库中,我们可能有 2 个对象。...通常将其称为“上帝对象”反模式,其中我们要到处用单独的一个对象,因为所有事情都得它来做。稍后我们将详细讨论。 里氏分离原则 软件各部分的子级和父级不可以互换。 你竟然会在代码中使用继承吗?...因为如果我们不遵循里氏分离原则,我们就会构建准确而健壮的继承链。将逻辑抽象为封装好的 base 原型 / 对象。我们还会对原型链中的不同方法按逻辑分组,它们的特定覆盖会让代码路径更加可预期和可发现。...多职责原则 确保你的函数 / 对象有多重职责。 优秀的编程人员常常会将他们的代码分成多个不同的对象或模块。但我可搞不清楚这种事情,我记不住它们都负责什么事情。

    53630

    程序员翻车时的 30 种常见反应

    一些 JavaScript 插件也需要大量的额外文件。有时候这些杂乱的东西会让人厌烦,但至少它们是可以用的! 4. “网上一定能找到解决方案” 在碰到难题时,我的第一反应是上网。...那么,在编程时听音乐真的能让你在调试代码时变得更聪明吗?可能不会,但希望它也不会让你变得更笨。 15. “或许现在是检验鲍尔默巅峰理论的好时机” 我想很多人都知道鲍尔默巅峰理论。...我们都知道,当你想要放弃一件事情,会有一种挫败感,同时又觉得放弃并不是正确的选择。你希望继续前进,并尝试新的解决方案。但如果你发现你又因此浪费了一个小时呢?我经常遇到这种情况,这让人感到非常沮丧。...“我多么希望给数据库做过备份……” 在开发和调试代码时,我并不总是会想到给数据库做备份。但是,数据备份提供了一个保障,在做出某些变更之前可以及时回退。...之前几个小时的辛苦工作几乎没得到有什么回报,所以做出这个决定是很艰难的。但当我陷入困境时,重新开始往往正是完成一个项目所需要做的事情。 看看,这是不是你自己?

    51610

    Unity基础教程系列(九)——形状行为(Modular Functionality)

    (每个形状在做它们自己的事情) 1 行为组件 当前,所有形状都可以移动和旋转,但这并不是它们唯一能做的。我们可以想出一些希望形状表现出来的不同行为。...要使形状做其他事情,只需将其代码添加到Shape.GameUpdate中即可。但是,如果我们定义很多行为的话,那么该方法将变得非常庞大。另外,我们可能不希望所有形状的表现都相同。...它的功能和我们现在的移动完全一样,但现在是在一个单独的类中实现。创建一个扩展ShapeBehavior的MovementShapeBehavior脚本。...让它使用switch语句来添加正确的行为组件。当我们未能添加正确的类型时,也让它返回null。如果我们在调用这个方法后出现了一个空引用异常,这意味着我们忘记在开关中包含一个行为类型。 ?...可以使用该限制,例如,不破坏未使用的组件,并在以后需要时添加它们之前检查它们是否已经存在。或者通过让工厂意识到形状行为,来进行复杂的合并。

    1.3K40

    JavaScript代码风格要素

    = compose2(f, g);incThenDoublePointFree(20); // 42 当每次使用promise链时,你就是在做这样的事情。...想一想如果你直接调用这些方法时: component.componentWillUpdate()。这就好像在说,“吉米吉米在晚餐吃牛排。”你没有必要听到同一个对象的名字两次。...如果数据已经在其他地方加载过了会怎么样,就会做很多重复和浪费的事情。 分拆关注点也使得它们更容易进行测试。我喜欢对我的应用程序进行单元测试,并在每次修改代码时查看测试结果。...而分拆功能点允许你进行单独的单元测试,得到测试结果。 上文已经已经分析出单独的功能点,我们可以在应用程序中提供不同的生命周期钩子给其调用。 当应用程序开始装载组件时,可以触发数据加载。...); 不同的技术方案利用不同的代码组织结构来实现 迄今为止,应用程序中未解决的问题很少。最终,我们都会一次又一次地做着同样的事情。当这样的场景发生时,意味着代码重构的机会来啦。

    857100

    波士顿动力机器人热舞背后藏着哪些秘密?工程副总裁揭秘

    因为我们相信,如果想让机器人广泛应用于商业领域,最终走入家庭,这样的性能是它们必不可少的。...机器人真正擅长的事情是以完全相同的方式一遍又一遍地重复做一件事,因此,当我们令其执行我们想要的动作时,机器人就可以重复执行,同时我们会从不同的角度拍摄视频。 ‍ ‍...人们很难通过观看视频看出这背后所花费的时间,以及它们能够在多大程度上代表机器人的真实能力。你可以谈谈吗? ‍我尝试从这个视频出发来回答你的问题,当然我们发布的所有视频都是同样的道理。...当我们跑着拍摄这段齐舞多次之后,我们可以相当靠谱地重复它。在最终的两分钟段落里,不存在任何剪辑。 当然硬件还是存在问题的,它们需要维护,机器人有时候会跌倒。...这些行为不会被产品化,也不是 100% 可靠,但它们是可重复的。我们诚实地展示了机器人能做的事情,我认为当你声称自己实现一件事时,诚实是必要的,这对我们来说很重要。 ‍

    63510

    长文 | 我如何使用 git

    这是我想避免的情况。 我认为这三个目标不可能总是100%实现,但我会尽量记住这些核心思想——事情是否容易撤销?是否容易作为潜在的回归来调试?...我认为保持在最新的主分支上进行变基更清晰。我不喜欢我的分支上有合并提交。交互式变基还允许我查看所有我做的提交,并了解分支上的内容。 当我变基时,我不担心破坏原始的、未被篡改的提交历史吗?...我独自工作时的提交信息,与我在团队中工作时的提交信息是不同的。进行代码审查时的提交信息,又与结对编程时的有所不同。 你的提交信息是写给谁的,以及你为什么在那个时候写这个信息?...这些问题应该决定你提交信息的内容。 当我在自己个人的仓库中独自工作,尝试让持续集成(CI)运行起来时,你很可能会看到我在主分支上使用单字母的提交信息。...我也用gh在开放的拉取请求分支之间切换,特别是当我检出贡献者的拉取请求时,它们位于一个分支中。 我还有这两个非常实用的别名,用于在开放的PR之间模糊切换,希望我能更经常地记住使用它们。

    8510

    Python 的 2018 年终总结:发展状况回顾

    源 / Python程序员 这个月早些时候我在加拿大PyCon的演讲让我兴奋不已,在会议期间,我与许多聪明人交谈,似乎每个人都在谈论着同样的希望和痛苦。...另外,单独将开发环境需求分离出来是非常特别的做法。不同的小组开发不同的部分,所需要的环境需求也不一样,这样一来不利于软件的可再生构建。...许多人都写过关于f-strings优点的文章,从它们的自然语法到它们带来的性能改进。我觉得没有必要重复这些观点,我只想说这是一个神奇的功能,自从它们发布后我就一直在使用。...在我编写代码时所犯的所有错误中,有固定90%都可以追溯到与类型相关的错误(现在我的程序主要出现此错误)或当我认为我在创建一个新变量时,在同一个函数中意外地重用以前的变量的错误。...同样,我可以在notebook中开发一个想法,然后将其转换为脚本,并以最小的更改将其用于生产环境。 不管怎样,这就是我的想法。

    55730

    使用 Linux 软件包管理器的 5 个理由

    在 2021 年,人们喜欢 Linux 的理由比以往任何时候都多。在这个系列中,我将分享 21 个使用 Linux 的不同理由。今天,我将谈谈软件仓库。...在我使用 Linux 之前,我认为在计算机上安装的应用是理所当然的。我会根据需要安装应用,如果我最后没有使用它们,我就会把它们忘掉,让它们占用我的硬盘空间。...我知道这一点,但我并没有想过要有其他的选择,因为正如人们所说,你不知道自己不知道什么。 当我改用 Linux 时,我发现安装应用的方式有些不同。...在我还没有改用 Linux 之前,我在处理工作用的媒体文件时遇到错误,或者在玩不同的游戏时出现故障,或者在阅读 PDF 时出现怪异的现象,等等,这些都不是什么稀奇的事情。...而当我在安装一台新电脑时,我运行 一个简单的 Ansible 脚本 来自动安装我所依赖的所有软件的最新版本。这很简单,很智能,也是一种独特的解放。 更好的包管理 Linux 从整体看待应用和操作系统。

    58620

    Unity基础系列(一)——创建一个时钟(GameObjects与Scripts)

    (12小时都有了) 这个时候,我们就不再需要这个临时的模板组了,选择所有的hour indicators,把它们全部拖拽到clock的对象下面,让它们成为clock的一部分。...(保存场景) 如果你自己照着做了,或者想跳过刚才制作场景的步骤,那么没关系,你可以直接用我创建的,后面会给出下载方式。...命名空间就像是网站的域名一样,但是是代码层级的。想象一下,如果两个人都写了一个Clock的类,那么我在引用Clock的话,就不知道用的是哪个。...当我们的权限是public的时候,好玩的事情就发生了,我们切回Unity,然后选择clock对象,还记得我们之前已经把clock的脚本组件绑上去了吗?看看这个clock脚本里多出了一栏: ?...这个时候,你只要把前面创建的时针对象拖拽进来,就能完成对时针引用。把它们连接在一起,如下: ? 2.3 设置3个指针 按照刚才的方法,把3个指针的引用都拿到。 ?

    2.3K10

    Ext JS 教程-MVC架构 原

    遵循这个约定将获得许多重要的好处: 1 每一个应用程序都以同样的方式运作,因而你可以只用去学一次(就掌握其工作原理)。 2 因为它们都以同样的机制工作,因此在应用之间共享代码是很容易的。...在MVC布局中,所有的类都放在app文件夹中,里面一次放着区分你的模型、视图、控制器和存储(store)的命名空间的文件夹。下面是当我工作完成以后的一个简单的示例应用的文件结构: ?...让我创建一个能够帮助我们管理用户账户的简单账户管理应用。首先我们需要为这个应用程序取一个全局的命名空间。所有ExtJS 4应用程序都应该使用一个单独的全局变量,将应用程序的所有类网络其中。...这就会告诉应用程序自动加载那个文件,以便我们在启动时使用到它。引用程序使用 ExtJS 4 的新的动态加载系统去自动的把这个文件从服务器推出来。下面是现在当我们刷新页面时所看到的: ?...控制器关注到它们被自动导入到页面上的定义,并且赋予了一个storeId,让他们可以很容易的在我们的视图中被引用到(在这里是通过简单的配置 store:’Users’)。

    3.3K10

    整洁架构之CSS

    background, color 自身的布局样式 flex 其他样式比如 border 根据这些特点和常见的规范,可以考虑从下面几个维度对样式进行分离: 布局(Layout)和尺寸(size): 一个组件在不同的父组件下拥有不同的尺寸是再正常不过的事情...但这种方案在实现时会遇到不少问题,首先是修饰类的设计,例如当我在定义例如 error, primary, warning 的修饰类时,究竟哪些样式属性是我可以覆盖的哪些是不可以,这必须有事前约定。...绝大部分人遇到的问题是: 我以为我修改的是 A 组件的样式,但无形中却影响到了 B 组件; 组件 A 同时受好几组样式的影响,无论单独修改谁都无法达到最终的效果。...所以当我发现某个框架只有要求人们阅读完数十页最佳实践有关的文档才能写出符合官方标准的好代码时,那么现实工作中好代码出现的概率基本为0——在规范输出代码上,一则有效的 eslint 规则比十页文档都要强。...产品坏了是肯定的,但相比其他 bug 有意思的事情是: 相比脚本而言发现样式问题的概率高,所见即所得; 带来的破坏相比脚本功能小,问题下产品依然可用; 修复问题成本低,甚至不需要完整阅读源码即可有针对性的快速修复

    39210

    三年全职 Rust 游戏开发,真要放弃 Rust 吗?

    最典型的例子就是像这样的情况:"当我遍历这个查询时,我想要检查另一个对象上的一个组件,并且触发一系列相关的系统"(生成粒子、播放音频等)。...但是在你向我解释我错了的时候,我已经完成了我的功能实现并继续前进。我一次性编写代码而不考虑代码本身,当我编写代码时,我在思考我正在实现的游戏功能以及它对玩家的影响。...你是通过构建一些简单机制的原型并让人们玩它,看看核心内容是否有效,然后再添加更多东西让人们再玩一次。其中一些互动必须通过在游戏中玩了许多小时、尝试了许多不同的事情后对游戏的深入了解来发现。...即使忽略上述情况,过程宏的学习曲线非常陡峭,并且它们必须在一个单独的 crate 中定义。这意味着与声明式宏不同,你不能轻松地创建一个新的过程宏,就像创建一个函数一样。...我笔记本电脑上有一个“保持冷静并调用Clone”的贴纸,对于Arc及类似的东西也是如此,特别是当你试图优化原型设计速度和迭代速度时。快速修补让事情运行起来是没问题的。

    3.2K20
    领券