1

「パーツ」オブジェクトと「マテリアル」オブジェクトがあります。各パーツには最大で 1 つのマテリアルが割り当てられます。各マテリアルは 0 個以上のパーツに割り当てられます。2 レベルの DAG です。

各パーツ オブジェクトは、そのマテリアルへの参照を持つ必要がありますか? または、マテリアル名またはインデックスを保存するだけの方がよいでしょうか。または、データベース以外に別の方法がありますか?

最初の方法は、同じマテリアル オブジェクトへの複数の参照を意味します。

2 番目の方法は、数値インデックスが正しく更新されない可能性があるため、または名前でマテリアルを参照する場合に文字列比較が必要になるため、見苦しく見えます。また、言語で既に利用可能なオブジェクト参照を再発明しています。

4

1 に答える 1

0

参考にどうぞ。高速で、メモリの使用量が少ないため、必要になります。(実際に使用すると思います。別の、または追加のオプションは、各マテリアルのパーツ参照のリストを保持することです。ただし、必要がない場合はこれを行わないでください。)

マテリアルの名前またはインデックスを格納すると、より多くのスペースが使用され、マテリアルのオブジェクトを取得しようとするとコストがかかります。実際、部品の材料の名前を取得する最も安価な方法は、参照を使用して材料を取得し、材料から名前またはインデックスを取得することです。

プログラムの内部で名前とインデックスを使用しないでください。データベースや他のプログラムから何かを取得するには、それらを使用する (そしてプログラムに保存する) 必要があります。(実際には、「他のプログラム」とは、ソケットなどフラット ファイルを意味します。元のデータは、別のプログラムまたはこのプログラムの別のセッションからのものでした。) また、参照を維持する必要があります。マテリアルが削除された場合、すべての参照が削除されます。それに変更する必要があります。または、マテリアルを削除済みとしてマークすることもできます (ガベージ コレクションではうまく機能しますが、再追加に注意してください)。

そして、自分自身に矛盾するように、資料(例としてあなたのケースを使用する)が継続的に追加および削除されているときにうまく機能するため、まれに参照の代わりに名前を使用しました. 何かを「Lumber」と特定した場合、その名前のマテリアルを 100 回削除および追加できますが、1 日の終わりに、パーツの使用に影響を与えることはありません。

于 2012-04-09T19:24:07.900 に答える