如何在不用 C# 说出他的名字的情况下引用自己的对象

Posted

技术标签:

【中文标题】如何在不用 C# 说出他的名字的情况下引用自己的对象【英文标题】:How to refer an object of himself with out saying his name in C# 【发布时间】:2021-10-23 04:09:55 【问题描述】:

我有几个对象,我需要计算与主要点(主要)的距离,并通过采用混沌值来增加主要与周围的每个对象之间的距离。 但我不想为每个人设置不同的脚本。我希望每个脚本都使用相同的脚本。

简单地说,这就是我正在尝试的: 222 = 2 2 2

212= 2 1 2

222= 2 2 2

// 1是重点

// 2是它周围的其他物体

那么我怎么能不说出他的名字来引用对象本身呢?

或者我应该改变我打算做的方式吗?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DistanceMovement : MonoBehaviour


public int chaos = 0;
public GameObject main;        // I referred the main object
                               // which we calculete distance from
 float distance;                 

void Start()

    float distance = chaos;      // firts checking


void Update()

    // Gets the distance between 2 objects 
float distances = Vector3.Distance (main.transform.position, object2.transform.position);
    //how can I do that without saying objects name but saying it his himself??
    

    // checks whether there was increase in chaos lvls
     if (chaos - distance >= 0)
    
        chaos - distance += distances;
     

         

【问题讨论】:

你的主要目标对我来说不是很清楚。主要对象是什么?什么是对象2?此代码将附加到哪个游戏对象?什么是“自己参考脚本”? 我改进了编辑我希望它更容易理解:D 【参考方案1】:

我猜你的意思很简单

float distances = Vector3.Distance (main.transform.position, transform.position);

其中transformMonoBehaviour 的属性(您的类继承自该属性)并返回

Transform 附加到此 GameObject

所以GameObjectTransform 这个组件被附加到。

【讨论】:

这么简单我实际上不需要写任何东西? yes ^^ 这基本上等于写this.transformthis.gameObject.transform .. 但通常在c# 你可以跳过this 如果没有与参数的名称冲突【参考方案2】:

而不是 object2.transform.position ,使用 transform.position ,它会起作用,它指的是你的脚本被攻击的游戏对象。 同样为简化起见,您可以先声明Vector3 name = transform.position,如果需要重复使用,可以使用该向量。

【讨论】:

以上是关于如何在不用 C# 说出他的名字的情况下引用自己的对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在CMD下建一个net命令,说出具体的操作过程.特别是建完如何运行.

c#中序列化是啥,怎么用,啥情况下用,不用有啥后果?

LSTM之父再称ResNetGAN等五大网络都有他的功劳,网友却说:自负大于引用数

你能够说出超过一万种动物的名字吗?悬赏分将视说出的名字数量增加

C#中如何获取汉字的笔画数和汉字的拼音

如何通过引用从 c# 到 c++ 传递字节数组